FallTime ver.0.01
FallTimeの数字表示も合わせたコードが出来ました。
まだ、動くには程遠いですが・・・
一応アドバイスなども欲しいので、コード&回路図を載せておきます。
アドバイス等ご協力をお願いいたしますm(_ _)m
まだ、動くには程遠いですが・・・
一応アドバイスなども欲しいので、コード&回路図を載せておきます。
// Falling's Timer ver.0.01 : 二個のセンサーを用意する
// ひとつはタクトスイッチ、もうひとつはCdSセル
// タクトスイッチでストップウォッチ開始し、
// CdSセルがオンになったところで、ストップウォッチを止める
// 時間表示も含めたテストコード
#define BEGIN_button 13 // タクトスイッチを接続したピン
#define STOP_button 12 // CdSセルを接続したピン
#define LED 0 // ずっと点いているLED
// E,D,G,C,B,A,F
boolean table[10][7]={ {0,0,1,0,0,0,0}, // 0
{1,1,1,0,0,1,1}, // 1
{0,0,0,1,0,0,1}, // 2
{1,0,0,0,0,0,1}, // 3
{1,1,0,0,0,1,0}, // 4
{1,0,0,0,1,0,0}, // 5
{0,0,0,0,1,0,0}, // 6
{1,1,1,0,0,0,1}, // 7
{0,0,0,0,0,0,0}, // 8
{1,0,0,0,0,0,0} };// 9
int b_val = 0; // タクトスイッチの状態を格納
int b_old_val = 0; // b_valの前の値を保存
int s_val = 0; // CdSセルの状態を格納
int s_old_val = 0; // s_valの前の値を保存
// 時間表示のための変数
int sec = 0;
int msec = 0;
int nsec = 0;
unsigned long startTime = 0; // ストップウォッチが開始した時間
unsigned long stopTime = 0; // ストップウォッチが停止した時間
void setup() {
pinMode(BEGIN_button, INPUT); // タクトスイッチ、CdSセルは
pinMode(STOP_button, INPUT); // ともに入力に設定
// LEDの全てのピンを出力に
pinMode(LED, OUTPUT);
for(int i=1; i<=7; i++){
pinMode(i, OUTPUT);
}
}
void loop() {
b_val = digitalRead(BEGIN_button); // タクトスイッチの値を保存
s_val = digitalRead(STOP_button); // CdSセルの値を保存
// 変化を確認する
if *1 {
b_old_val == b_val; // 一度オンになると
// リセットされるまで
// プログラムは終わらない
startTime = millis(); // これが開始時間
// 上のような条件でのみ、最初の値を格納する
delay(10); // タクトスイッチのバウンシングを防止
}
// ストップ操作
if *2 {
stopTime = startTime - millis(); // 最終的にこれが求める値
// バウンシングは起こりえないので
// 今回は気にしない
}
s_old_val = s_val; // 古くなった値を格納
// 秒(sec)、10分の1秒(msec)、100分の1秒(nsec)に分ける
if (stopTime >= 1000) {
sec = stopTime / 1000;
stopTime = stopTime - 1000 * sec;
msec = stopTime / 100;
stopTime = stopTime - 100 * msec;
nsec = stopTime / 10;
} else {
msec = stopTime / 100;
stopTime = stopTime - 100 * msec;
nsec = stopTime / 10;
}
// ここに、stopTimeを表示させるコードを入れる
for(int j=0; j<=6; j++){
digitalWrite(LED, LOW);
digitalWrite(j+1, table[sec][j]);
}
for(int j=0; j<=6; j++){
digitalWrite(LED, LOW);
digitalWrite(j+1, table[msec][j]);
}
for(int j=0; j<=6; j++){
digitalWrite(LED, LOW);
digitalWrite(j+1, table[nsec][j]);
}
delay(1000);
}
// 不明な点及び修正点などがありましたら、
// http://grousefuji.blogspot.com/
// Grouseまでお問い合わせ下さい。
// ※これは正常に動くことが確認できていません。(試験体:Japanino)※
// 参考:http://kousaku-kousaku.blogspot.com/
// Copyright (C) 2010 Grouse. All right reserved.そして回路図・・・
アドバイス等ご協力をお願いいたしますm(_ _)m