ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

自転車用ウインカーの制作(12)

制御回路のはんだ付けが無事完了したので、さっそくプログラムを作る。

構造はシンプル。スイッチの状態に応じてLEDを点灯する。また、電源が入っている間はピッピッと音を出す。

構造はシンプルだし、エラー処理とかもいらないのでコードもシンプル。

void setup() {
  // put your setup code here, to run once:
  pinMode(PIN_PA1, OUTPUT);
  pinMode(PIN_PA2, OUTPUT);
  pinMode(PIN_PA3, OUTPUT);
  pinMode(PIN_PA6, INPUT);
  pinMode(PIN_PA7, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(PIN_PA1, !digitalRead(PIN_PA7));
  digitalWrite(PIN_PA3, !digitalRead(PIN_PA6));
  tone(PIN_PA2, 880, 10);
  delay(500);
  digitalWrite(PIN_PA1, HIGH);
  digitalWrite(PIN_PA3, HIGH);
  tone(PIN_PA2, 880, 5);
  delay(500);
}

これで試しに動かしてみた。

・・・あれ。なぜかLEDが常に両方ONになる。なぜだろう?

試しにテスターでOFF側スイッチの電圧を計ってみる。0Vだ。あれ?テスターの針を当てたらLEDが消灯したぞ?ということは・・・入力インピーダンスが高すぎて、電荷が溜まってたのかな?というわけで、抵抗R11, 12を追加してみた。以下、変更後の回路図。

回路図(ダイオード下流からの電荷抜き抵抗を追加)

よし、無事動いた。以下、動いている様子。

動作テスト

今日はここまで。