Japanino (Arduino)の調べ  将棋の調べ  鉄道の調べ  旅先料理の調べ  ビールコレクション

Japanino (Arduino) のプログラム Dice

Dice.sk

/*
  サイコロ dice
  Copyright (C) GOMI Hiroshi 2010 All right reserved.
 */
int tonePin = 14;
int inputPin = 6;
int ledPins[] = {7, 8, 9, 10, 11, 12, 13};
int note ;

void setup() {
  for (int led = 0; led < 7; led++) {
    pinMode(ledPins[led], OUTPUT);
  }
  pinMode(inputPin, INPUT);
  randomSeed(millis());
  for (int led = 0; led < 7; led++) {
    digitalWrite(ledPins[led], LOW);  // set the LED off      
  }
  initDice();
}

void initDice() {
  digitalWrite(inputPin, HIGH);
  note = 131;
}

void loop() {
  // 入力スイッチ(inputPin)が ON になるまで待つ
  for (;;) {
    if (digitalRead(inputPin) == LOW) break;
    delay(10);
  }
  diceloop();
  initDice();
}

/*
   サイコロ本体
*/
void diceloop() {
  prePlay();           // サイコロを投げる様子を LED の点滅と音で演出
 
  long r = random(6);  // サイコロを振る(乱数発生)
  digitalWrite(ledPins[r], HIGH);
  
  // スイッチが OFF になるまで待つ
  for(;;) {
    if (digitalRead(inputPin) == HIGH) return;
    delay(10);
  }
}

/*
 LED を音を出しながら、点滅を往復させる
*/
void prePlay() {
  for(int i = 0; i <= 6; i++) {
    playAndLED(i);
  }
  for(int i = 6; i >= 0; i--) {
    playAndLED(i);
  }
  
}

/*
 1個の LED を点滅させ、音を出す
 @param led LED の相対位置
*/
void playAndLED(int led) {
   tone(tonePin, note, 100);
   note += 8;
   digitalWrite(ledPins[led], HIGH);
   delay(100);
   digitalWrite(ledPins[led], LOW);    
}

更新記録


Japanino (Arduino)の調べ  将棋の調べ  鉄道の調べ  旅先料理の調べ  ビールコレクション

Copyright © 2010 GOMI Hiroshi All Rights Reserved