前回のプログラムでちゃんちゃんちゃーん。の部分が出来ました。その後のパートも完成させていきます。ちゃんちゃんちゃんちゃんのパートとちゃーーーんのパートができれば完成ですね。なんとか頑張って作ってみてください。
Pythonで関数の作成
とても長いコードになりましたね。とても読みにくいコードです。他の人がみてもわかりやすいコードに、またメンテナンスしやすいようにコードを書き換えていきましょう。
このCircuitPythonには当然Pythonがもつ関数の機能も使うことが出来ます。パートごとに関数としてまとめてしまいましょう。
defでdefine(定義)する
まずはちゃんちゃんちゃーんのパートはmelody01という名前の関数で定義します。def melody01():で以下の処理を書いておけばいつでも呼び出すことが出来ます。
ちゃんちゃんちゃんちゃんはmelody02で、ちゃーーーんはmelody03で定義しておきます。
そしてwhile True以下でその関数を呼び出せばokです。すべてのパートを呼び出したあとにtime.sleepで3秒間休んで継ぎ目をわかりやすくしています。
#ledをジングルベールのリズムで点灯する
#関数を定義する
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.GP2)
led.direction = digitalio.Direction.OUTPUT
#この数値を変えることでテンポを変えます
tempo = 0.4
#ちゃんちゃんちゃーん関数
def melody01():
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
led.value = 1
time.sleep(tempo*2)
led.value = 0
time.sleep(tempo/10*2)
#ちゃんちゃんちゃんちゃん関数
def melody02():
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
#ちゃーーーん関数
def melody03():
led.value = 1
time.sleep(tempo*4)
led.value = 0
time.sleep(tempo*4/10)
while True:
melody01()
melody01()
melody02()
melody03()
time.sleep(3)
for文で繰り返し処理
ちゃんちゃんちゃんちゃん関数の部分を見てみましょう。4回同じ処理を繰り返しているのがわかりますね。そんなときはこんな風に書き換えることが可能です。Pythonでは繰り返し処理のときはfor文を使います。
#ちゃんちゃんちゃんちゃん関数
def melody02():
for num in range(4):
led.value = 1
time.sleep(tempo)
led.value = 0
time.sleep(tempo/10)
in rangeで何度繰り返すかを指定する
上記のプログラムでは4回処理を繰り返します。こうすることによって18行のプログラムがわずか6行に削減されました。またfor文があることによって同じ処理を繰り返しているのがひと目でわかりますね。
rangeはカウンターで数をカウントしてくれます。