■アニメーション
サーボ駆動のタイマーを利用してアニメーションさせてみます。ランダムなタイミングで瞬きするように、サーボ更新のタイミングでランダムに目を消します。whileループの中のサーボ駆動のコードの下に追加します。
リスト22-1 robot_blink.py(部分)
import random
# ***** 省略 *****
blink = 0
while True:
# *** Remote ***
# 省略
# *** Servo ***
if servo_flag == True:
servo_flag = False
# サーボ駆動
for i in range(12):
servo[i].duty_u16(get_pulse_width(int(temp_angle[i]) + correction[i]))
if random.randrange(100) == 0: #100回に1回の確率で
blink = 1 #目を閉じた
fill_circle(32,22,15,0) #目を黒く塗りつぶす
fill_circle(96,22,15,0)
display.show()
if blink == 1: #目を閉じていたら
blink = 0
fill_circle(32,22,15,1) #目を描く
fill_circle(96,22,15,1)
display.show()
random.randrange(x)は0からx-1までの整数をランダムに返しますので、
if random.randrange(100) == 0:
は100回に1回の確率で成立して中身が実行されます。この時は「blink」変数を1にして、次回(30ミリ秒後)下のif文が実行されて目を再描画します。
コメント