すごろくをやろうとしたらさいころがない?だったら作ればいいじゃないか、Arduinoを使って【Arduino超入門】

はじめに

子供がすごろくをもらってきたので家族でやろうとしたらうちにさいころがありませんでした。パソコンで乱数を発生させて画面に表示するとか、6角形の鉛筆に数字を書いて転がすとか方法はいろいろ考えられたのですが・・・。

そんなんじゃ子供が喜ばないと思いLEDを6個並べてさいころの代わりになるものを作りました。

結果

スイッチは以前作ったものを流用しました。
touch-sp.hatenablog.com
f:id:touch-sp:20201215143156j:plain:w400
スイッチを押したらただLEDが光るだけです。
Arduino Nano Everyを使用しています。

Arduinoスケッチ

long randNumber;

const int buttonON = LOW;    // ボタンが押されているとピンの値はLOW

const int buttonPin = 12;
const int LED1 = 2;
const int LED2 = 3;
const int LED3 = 4;
const int LED4 = 5;
const int LED5 = 6;
const int LED6 = 7;

void setup() {
  randomSeed(analogRead(0));
  
  pinMode(LED1, OUTPUT);
  digitalWrite(LED1, LOW);
  pinMode(LED2, OUTPUT);
  digitalWrite(LED2, LOW);
  pinMode(LED3, OUTPUT);
  digitalWrite(LED3, LOW);
  pinMode(LED4, OUTPUT);
  digitalWrite(LED4, LOW);
  pinMode(LED5, OUTPUT);
  digitalWrite(LED5, LOW);
  pinMode(LED6, OUTPUT);
  digitalWrite(LED6, LOW);
  
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(buttonPin) == buttonON) {
    
    randNumber = random(1, 7); // 1から6の乱数を生成

    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    digitalWrite(LED4, LOW);
    digitalWrite(LED5, LOW);
    digitalWrite(LED6, LOW);
    
    digitalWrite(LED1, HIGH);
    delay(100);
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, HIGH);
    delay(100);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, HIGH);
    delay(100);
    digitalWrite(LED3, LOW);
    digitalWrite(LED4, HIGH);
    delay(100);
    digitalWrite(LED4, LOW);
    digitalWrite(LED5, HIGH);
    delay(100);
    digitalWrite(LED5, LOW);
    digitalWrite(LED6, HIGH);
    delay(100);
    digitalWrite(LED6, LOW);

    switch(randNumber){
      case 1:
        digitalWrite(LED1, HIGH);
        break;
      case 2:
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        break;
      case 3:
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        break;
      case 4:
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        digitalWrite(LED4, HIGH);
        break;
      case 5:
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        digitalWrite(LED4, HIGH);
        digitalWrite(LED5, HIGH);
        break;
      case 6:
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        digitalWrite(LED4, HIGH);
        digitalWrite(LED5, HIGH);
        digitalWrite(LED6, HIGH);
        break;
      default:
        break;
    }
  }
}

最後に

子供の感想は・・・



















「いやだ、こんなの!」