ランダムな数字を生み出す
REPLモードで試してみます。
>>>import random
>>>random.randrange(1, 10)
5
random.randrange(最小の数値、最大の数値)
randomをインポートすることによって、乱数を発生させることができるようになります。randrange(最小の数値,最大の数値)で整数を返してくれます。前回つかってみたプログラマブルボタンおぼえていますか?ボタンを押したらLEDを光らせるプログラムを作ってみてください。今回は10個のLEDを使ってみましょう。GP20のボタンを押したら、その数字に対応したLEDを光らせます。
rouletto.py
#CircuitPythonでLEDルーレット
import board
import digitalio
import time
import random
# LEDsをイニシャライズ
# Maker Pi RP2040上のLED10個を使います
LED_PINS = [board.GP0,
board.GP1,
board.GP2,
board.GP3,
board.GP4,
board.GP5,
board.GP6,
board.GP7,
board.GP16,
board.GP17]
LEDS = []
for pin in LED_PINS:
# pinをDigitalInOutモードにし、アウトプット方向に設定する
digout = digitalio.DigitalInOut(pin)
digout.direction = digitalio.Direction.OUTPUT
#LEDSリストの中に加える
LEDS.append(digout)
# GP20のプログラマブルボタンをイニシャライズする
btn1 = digitalio.DigitalInOut(board.GP20)
btn1.direction = digitalio.Direction.INPUT
btn1.pull = digitalio.Pull.UP
while True:
# GP20をチェックする
if not btn1.value: # GP20が押されたら
roulettoNo = random.randint(0, 9) #roulettoNoに数値を発生
# その番号のLEDを5回点滅させる
for i in range(5):
LEDS[roulettoNo].value = True
time.sleep(0.3)
LEDS[roulettoNo].value = False
time.sleep(0.3)
どうでしょう?ルーレットになりましたね!しかしまだまだ改良の余地はあります。10個目のLEDのときは大当たりとして、もっと派手に光らせたりするのもいいですね。またはif文を使って、自分だけ大きい数が出るようなイカサマルーレットを作ってみるのも楽しいかもしれません。