Japanino (Arduino)の調べ 将棋の調べ 鉄道の調べ 旅先料理の調べ ビールコレクション
Clock.sk
/*
3分砂時計 clock
スイッチを入れると計測開始。スイッチを OFF の位置に戻して使用(ON の位置では連続計測)。
1秒ごとに音と光で知らせ、1分毎に LED で途中状況を表示。
途中で計測を止めるときはリセットボタンを押す。
Copyright (C) GOMI Hiroshi 2010 All right reserved.
*/
int count = 180; // 砂時計の時間設定(秒)
int tonePin = 14;
int inputPin = 6;
int ledPins[] = {7, 8, 9, 10, 11, 12, 13};
int ledp = 6; // 1秒ごとに点滅する LED の相対位置
int minute;
int note = 131; // 1秒ごとに鳴らす音の音程(周波数)
void setup() {
for (int led = 0; led < 7; led++) {
pinMode(ledPins[led], OUTPUT);
}
pinMode(inputPin, INPUT);
initClock();
}
void initClock() {
for (int led = 0; led < 7; led++) {
digitalWrite(ledPins[led], LOW); // set the LED off
}
digitalWrite(inputPin, HIGH);
minute = 0;
}
void loop() {
// 入力スイッチ(inputPin)が ON になるまで待つ
for (;;) {
if (digitalRead(inputPin) == LOW) break;
delay(10);
}
timeloop();
}
/*
砂時計本体
カウンタ(秒)が経過するまで、1秒ごとに LED を点滅させ、音を出す
*/
void timeloop() {
unsigned long time = millis();
for(int i = 1; i <= count; i++) {
tone(tonePin, note, 100);
digitalWrite(ledPins[ledp], HIGH);
if (i % 60 == 0) {
digitalWrite(ledPins[minute++], HIGH);
if (minute >= 6) minute = 0;
}
// 1秒経過するまで待つ
for(;;) {
if (time + 1000 <= millis()) break;
delay(10);
digitalWrite(ledPins[ledp], LOW);
}
time += 1000;
}
initClock();
}
更新記録
Japanino (Arduino)の調べ 将棋の調べ 鉄道の調べ 旅先料理の調べ ビールコレクション
Copyright © 2010 GOMI Hiroshi All Rights Reserved