人生ゲーム ルーレット完成形
人生ゲーム用の電子ルーレットをブレッドボード上に組んだままで放っておいているのが気になっていた。基板も買っていたのに、このままではジャンパワイヤが抜けて、再現できなくなるという危機感が募り、ようやく基板の作り込みに着手した。下の写真が出来上がり


ブレッドボート上のジャンパワイヤのもっさーとした状態を見て、如何にも複雑怪奇な回路を組んでやったな、ふむ、と満足感に浸っていたが、基板上に配線すると哀れを催すような簡素さが泣ける(多少回路の無駄を省いたこともあるが)
台は、100円ショップでプラスチックの手頃な箱がないか探していたところ、木製のアクセサリボックスで良さそうなものを見つけた。プラスチックと違い加工がしやすく助かった。本人にとって見れば、ひっくり返された挙句穴まで開けられてびっくりしていることと思う


このようにしてできた完成形。指示盤はできるだけ賑々しくなるようにExcel, Power Point, Paint Shop Proを駆使してデザインした

実際の動き
記録のため、現状でのソースを置く。前回からさらに手を加えた部分もある
# Roulette_20250304.py : 2025/03/04 Modified
# By pushing any of buttons, the dice number (from 1 to 10) is randomly determined and servo motor indicates its value. A LED lights during the process.
# Runs on Raspberry Pi Pico.
# Developed on Micro Python.
# Pin assign --
# Servo Motor : GP0
# For each button: Green GP11, Red GP15, Yellow GP7, Blue GP3
# LED : GP16
from machine import Pin,PWM
import time
import math
import random
pin16 = machine.Pin(16, machine.Pin.OUT)
pin0 = machine.Pin(0, machine.Pin.OUT)
servo = machine.PWM(pin0)
servo.freq(50)
def servorandom_dice_Pico():
pulse_prev = 0
m = random.randint (6, 20)
n = 1
while n <= m:
dice = random.randint (0, 9)
pulse = int(523 * dice + 2400)
if abs (pulse - pulse_prev) > 150:
servo.duty_u16(pulse)
lapse = 0.1 + n / m * 0.8
print (m, n , dice + 1, "Pulsewidth", pulse, lapse)
time.sleep (lapse)
pulse_prev = pulse
n += 1
# Calculation method of Duty
# https://ippei8jp.hatenablog.jp/entry/2017/08/25/054956
n = 1
while True:
pin = machine.Pin(3)
pin = machine.Pin(3, machine.Pin.IN,machine.Pin.PULL_DOWN)
# print ("Pin0 (G) : ", pin.value())
if pin.value():
print (" ====Blue")
pin16.value(1)
servorandom_dice_Pico()
pin16.value(0)
pin = machine.Pin(7)
pin = machine.Pin(7, machine.Pin.IN,machine.Pin.PULL_DOWN)
# print ("Pin5 (R) : ", pin.value())
if pin.value():
print (" ====Yellow")
pin16.value(1)
servorandom_dice_Pico()
pin16.value(0)
pin = machine.Pin(11)
pin = machine.Pin(11, machine.Pin.IN,machine.Pin.PULL_DOWN)
# print ("Pin10(Y) : ", pin.value())
if pin.value():
print (" ====Green")
pin16.value(1)
servorandom_dice_Pico()
pin16.value(0)
pin = machine.Pin(15)
pin = machine.Pin(15, machine.Pin.IN,machine.Pin.PULL_DOWN)
# print ("Pin15(B) : ", pin.value())
if pin.value():
print (" ====Red")
pin16.value(1)
servorandom_dice_Pico()
pin16.value(0)
# print (n ,"---- ")
n += 1
time.sleep (0.2)
# print (pin16)
しょうもなさの度を深め、完成形と言いながら何故か今後の改善点
無限回転できるサーボモータを使うとリアリティが増すだろう。回し方も正逆、強弱を選べるようにするとなお良し
動作時に派手なイルミネーションや音響を発する仕組みも良いだろう
2025/03/05
んねぞう