Arduinoと7セグLEDで電子サイコロを作ってスゴロクで遊んだよ!

スポンサーリンク

台風のため外出しない週末の過ごし方。家に転がっている「おとうさんのおもちゃ」で山キッズたちと遊びます。

今回は電子サイコロ!

「ねえねぇ、おとうさーん、Arduinoやろうよ」

というので、前回7セグLEDで遊んだ続きをやることにしました。

電子部品をチェックしに息子と日本橋をブラブラしてきたよ!

本当はLED7発でサイコロの目を表現したかったのですが、手持ちのLED在庫では色が揃わなかったので、7セグLEDでデジタルサイコロに方針変更。

IMG 3346

任意の数字を表示させるプログラムを作るところまでできていたので、あとは

・スイッチが押されたら、ランダムに1〜6の数字を表示する

・電子サイコロ感を出すために、ピロピロ回るアニメーションを加える

・ムードを盛り上げる効果音を発生(圧電ブザーで音を鳴らしています)

こんな感じでプログラムを書き足します。

今回時間がかかったところ

loop内でスイッチが押されたときにサイコロが回り始めるようにしたかったのですが、digitalRead(PINNO) == HIGHを条件にしても勝手にプログラムが進んでしまいます。調べた結果、digitalInする場合、GNDもしくは5Vを入れておかないと周りの回路の状態次第で不定値をとるようです。digitalInのPINの5vを直接入れるのではなく、プルアップ抵抗を入れて電流を流すことで解決しました。

第1回 Arduinoの基礎 – スイッチのオン・オフを読み取る | Arduino & Android 入門講座

また、乱数のシード値を一定にしてしまうと毎回同じ乱数が発生してしまうため、特に何も繋いでいないanalogIn(0)の値をシード値として使うようにしました。

動画もアップしてみました

電子サイコロなので、それほど大したプログラムでもないのですが、作ったものが実際に動くと楽しいものですね。

作ったものは実際に使って楽しむ!

Fullsizeoutput 3254

早速、電子サイコロを使いながらすごろくゲームをやって遊んでいました。

山キッズ1曰く、サイコロの振り方でズルできないから良い!らしいです。普段の遊びにも使えそうなので、次は小型のArduinoProMini互換ボードとかを使って組み上げちゃいましょうか。