Picot チュートリアル18

■単発動作

これまでに作成したアクションはすべて連続動作で、動作リストの最下行に達するとまた一番上の行に戻って同じアクションを繰り返すようになっていました。

ここでは、一通りの動作を終えたら繰り返さずにSTOPモードに戻るような単発アクションの例を示します。終了行の経過時間の列に「127」が来たら、そこでSTOPに移行するようにしています。

リスト18-1  remote_walk2.py(部分)

def set_action(code):
    # 省略
    elif data_code == 129: #9ボタン
        action_mode = 'KICK'
        action.clear()
        action = motion.kick.copy()
        rows = len(motion.kick)
    div_counter = 0
    key_frame = 0
    next_key_frame = 1

while True:
    # *** Remote ***
    # *** Servo ***
    if servo_flag == True:
        servo_flag = False
        if action_mode != 'STOP':
            # キーフレームを更新
            div_counter += 1
            if div_counter >= action[key_frame][12]:
                div_counter = 0
                key_frame = next_key_frame
                next_key_frame += 1
                if next_key_frame > rows-1:
                    next_key_frame = 0
                if action[next_key_frame][12] == 127:
                    action_mode = 'STOP'
                if action[next_key_frame][13] == 0: #無音

リスト18-2  motion.py(部分)

kick = [
    [90, 90,  90, 90, 90, 90,  90, 90, 90, 90,  90, 90, 12, 0],
    [90, 90,  90, 90, 90, 70,  75, 90, 90, 90,  90, 90, 12, 0],
    [90, 70,  90,120,110, 90,  75, 90, 90,100,  70, 90,  8, 0],
    [90, 70,  90,120,110, 90,  75, 90, 90,100,  70, 90,  8, 0],
    [90,110,  90, 30, 40, 90,  75, 90, 90,100, 110, 90, 12, 0],
    [90,110,  90, 30, 40, 90,  75, 90, 90,100, 110, 90, 12, 0],
    [90, 90,  90, 90, 90, 90,  90, 90, 90, 90,  90, 90,  8, 0],
    [90, 90,  90, 90, 90, 90,  90, 90, 90, 90,  90, 90,127, 0]
]

Picot チュートリアル インデックス >>
Picot チュートリアル 19 OLED表示テスト >>

コメント

タイトルとURLをコピーしました