【解説】Arduinoを使った電子サイコロの作り方 #7
今回は、Arduino UNOを使った電子サイコロの作り方をご紹介します。
これまでの内容を総動員して作りますので、「ちょっと不安かも…」という方は👇のマガジン記事から振り返ってみて下さい!
完成品のプログラムももちろん載せているので、ご安心を。
ぜひ、初心者の方も最後までチャレンジしてみてくださいね👍
はじめに
この記事では、ELEGOOのArduino用電子LearningキットE3を使います。
純正品のArduino UNOを購入した初心者で、「パーツだけのセットを探している」方にはピッタリの電子工作キットです。
今回は👆のキットを使って、電子サイコロのレシピをご紹介したいと思います。
動画
動画内で使っているプログラムや回路が少し違いますが、「電子サイコロってどういうもの?」という方にイメージを掴んでいただけると思います。
ぜひご覧ください👇
必要なもの
1. マイコンボード
この記事では、Arduino UNO R3を使います。
2. 電子部品
ELEGOO Arduino用電子LearningキットE3に入っている電子部品を使います。
赤色LED(RL5-R5015) × 7
抵抗10kΩ × 7
タクトスイッチ × 1
ブレッドボード × 1
ジャンパーワイヤー 適量
回路図
図中のAはLEDのアノード側(端子が長い方)を示しています。向きを間違えないように注意してください。
またArduinoのピン番号が振られている場所は、ワイヤーを伸ばしてArduino UNO本体のピンに挿してください。
配線の手順
👆の回路図を見ながら配線してみてください。
「難しいな...」と感じる方は、次に説明する手順を見ながら一緒にやっていきましょう!
ワイヤーを配線する
配線の色は自由ですが、できれば図中のオレンジのところは暖色系を、グレーのところは黒・青・緑などの暗い色を使いましょう。
*一般に電圧が高いところ(電源)には赤や黄色といった暖色を、GNDには暗い色を使います。
LEDを配置する
アノード(端子が長い方)とカソードの向きを間違えないように気を付けましょう。👆で示した回路図中の「A」と書かれているのがアノード側です。
【補足】LEDのアノードとカソード
LEDの端子をよく見ると、長い方があります。端子が長い方をアノード(A)と呼び、短い端子側をカソード(K)と言います。
向きを間違うとLEDは光らないので、回路図をよく見て配線しましょう。
抵抗を配置する
抵抗の足の位置が少し見えづらいですが、👆の回路図を見つつやってみてください。
スイッチを配置する
タクトスイッチにも向きがあるので、気を付けましょう。
Arduino UNOに配線する
ジャンパーワイヤーを使ってArduino UNOにつなぎます。つなぐピンを間違えないように気を付けてください。
違うピンにつないでしまうと、後のプログラムと合わなくなって上手く動かないです。
プログラミングする
プログラムは自由です。もしご自身のアイデアがあるなら、ぜひチャレンジしてみてくださいね👍
ただ「自分では難しいな…」と感じた方は、👇のプログラムを使って遊んでみてください!
プログラムの構造
基本的には、👇のようなことを考えて作りました。
sw_state=0 : 出目をランダムに表示する
sw_state=1 : 1つの出目を固定して表示する
という2つの状態を作り、スイッチを押すたびにsw_stateの値を書き換えて、その状態を行き来するようなプログラムを作ります。
電子サイコロのプログラム
👇が電子サイコロのプログラムです。注意事項をよくお読みになってから、使用ください。
//当Webサイトに掲載された内容によって生じた損害等の一切の責任を負いません。
//当webサイトの免責事項に同意いただける場合に限り、プログラムをご利用いただけます。
#define SW_PIN 13 //スイッチが接続されているピンを定義
int RAN_NUM = 1; //ランダムな数を格納する変数
int sw_state = 0; //スイッチの状態を記憶する変数
void setup() {
//入力ピンに設定
pinMode( SW_PIN, INPUT_PULLUP );
//出力ピンに設定
pinMode( 4, OUTPUT );
pinMode( 5, OUTPUT );
pinMode( 6, OUTPUT );
pinMode( 7, OUTPUT );
pinMode( 8, OUTPUT );
pinMode( 9, OUTPUT );
pinMode( 10, OUTPUT );
}
void loop() {
//SWが押されるまでランダムに出目を表示し続ける
while(sw_state == 0){
RAN_NUM = random(1,7); //ランダムに1~6の出目を生成
ledOff(); //LEDをすべて消灯
ledOn(RAN_NUM); //出目に応じたLEDを点灯
//SWが押されたら、状態を移行する(ループを抜ける)
if(digitalRead(SW_PIN)==LOW){
sw_state = 1; //状態を移行
delay(200);
}
}
//SWが押されるまで決まった出目を表示し続ける
while(sw_state == 1){
ledOn(RAN_NUM); //出目に応じたLEDを点灯
//SWが押されたら、状態を移行する(ループを抜ける)
if(digitalRead(SW_PIN)==LOW){
sw_state = 0; //状態を移行
delay(200);
}
}
}
//渡された出目に対応するledをONにする関数
void ledOn(int led_ran_num){
switch(led_ran_num){
case 1:
digitalWrite( 4, HIGH );
break;
case 2:
digitalWrite( 5, HIGH );
digitalWrite( 10, HIGH );
break;
case 3:
digitalWrite( 4, HIGH );
digitalWrite( 5, HIGH );
digitalWrite( 10, HIGH );
break;
case 4:
digitalWrite( 5, HIGH );
digitalWrite( 7, HIGH );
digitalWrite( 8, HIGH );
digitalWrite( 10, HIGH );
break;
case 5:
digitalWrite( 4, HIGH );
digitalWrite( 5, HIGH );
digitalWrite( 7, HIGH );
digitalWrite( 8, HIGH );
digitalWrite( 10, HIGH );
break;
case 6:
digitalWrite( 5, HIGH );
digitalWrite( 6, HIGH );
digitalWrite( 7, HIGH );
digitalWrite( 8, HIGH );
digitalWrite( 9, HIGH );
digitalWrite( 10, HIGH );
break;
}
delay(10);
}
//ledをOFFにする関数
void ledOff(){
digitalWrite( 4, LOW );
digitalWrite( 5, LOW );
digitalWrite( 6, LOW );
digitalWrite( 7, LOW );
digitalWrite( 8, LOW );
digitalWrite( 9, LOW );
digitalWrite( 10, LOW );
}
動作を確認する
回路の見直し、プログラムの見直しが終わったらコンパイル→アップロード(書き込み)の手順で、Arduino UNOにプログラムを書き込みます。
上手くいけば、👆の図のように光り始めます。スイッチを何回か押してみてください。ランダム表示と固定表示が切り換えられれば成功です。
ここまでナイスガンバです。お疲れさまでした👍
おわりに
いかがだったでしょうか。
もしこの記事がお役に立てたら、"スキ"を押していただけると励みになります!
今回は、電子サイコロの作り方についてご紹介しました。
ELEGOOのArduino用電子LearningキットE3を使えば、このように簡単に電子工作が楽しめます。初心者にはちょうどいい電子工作キットです。
特に純正品のArduino UNOを買った人は、パーツだけのセットを探していると思うので、おすすめです。
ぜひみなさんも、Arduino UNOを使って電子サイコロを作ってみてくださいね!
この記事が気に入ったらサポートをしてみませんか?