/* * * 出荷時スケッチ * */ // 設定 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); // 消灯する } }