Japanino特設サイト トップに戻る

Sketch スケッチ

“JAPANINO”スウィング

/*
*
* 出荷時スケッチ
*
*/

// 設定
int duration = 20;  // LEDを点灯する時間(ミリ秒)
int inputPin = 6;  // スイッチ入力ピン(オンでLOW)
int ledMin = 7;   // LEDピン範囲の最小
int ledMax = 13;  // LEDピン範囲の最大
int buzzPin = 14;  // ブザーピン(A0はD14としてアクセス)
int buzzTone = 4000;  // ブザーの音程
int buzzTime = 10;  // ブザーを鳴らす時間(ミリ秒)

// グローバル変数
unsigned long lastOn = 0; // ブザー鳴らし始め時刻(0なら鳴っていない)

void setup() {
 pinMode(inputPin, INPUT); // スイッチは入力
 digitalWrite(inputPin, HIGH); // 内蔵プルアップ有効
 for (int i = ledMin; i <= ledMax; i++) {
   pinMode(i, OUTPUT);  // LEDへの接続は出力
 }
 pinMode(buzzPin, OUTPUT); // ブザーは出力
}

// LED点灯中にやるべき処理
void pause() {
 unsigned long started = millis();

 for (;;) {
   unsigned long now = millis();

   // LED点灯時間が経過したら、
   if (now - started > duration) {
     // この関数を終わる。
     return;
   }

   // スイッチがオンになっていたら、
   if (digitalRead(inputPin) == LOW) {
     tone(buzzPin, buzzTone); // ブザーを鳴らす。
     lastOn = now;  // 鳴らし始めた時刻を覚えておく。
   }

   // ブザーが鳴っていて、かつ一定時間経過していたら、
   if (lastOn != 0 && now - lastOn > buzzTime) {
     noTone(buzzPin);  // ブザーを止める。
     lastOn = 0;  // 止めたことを覚えておく。
   }
 }
}

void loop() {
 // 上方向
 for (int i = ledMin; i <= ledMax; i++) {
   digitalWrite(i, HIGH); // 点灯する
   pause();
   digitalWrite(i, LOW); // 消灯する
 }

 // 下方向
 for (int i = ledMax; i >= ledMin; i--) {
   digitalWrite(i, HIGH); // 点灯する
   pause();
   digitalWrite(i, LOW); // 消灯する
 }
}
このページのトップへ