2016年4月7日木曜日

ラッチ型スイッチでLEDをオン・オフ

Multi-function ShieldのLED1とプッシュスイッチSW1を使って簡単なプログラムを作ってみましょう。

1.スイッチSW1とLED1の接続関係
LED D1~D4は、Arduinoボードの13ピンから10ピンに接続されています。ピン10~13にLOWが出力されるとLED D4~D1がオンする接続になっています。
またスイッチS1~S3はArduinoボードのA1ピンからA3ピンに接続されています。スイッチをオンするとLOW(アナログ値:0)を読み、オフのするとHIGH(アナログ値:1023)を読みます。デジタルまたはアナログのどちらでも読み取ることができますが、今回はデジタルで読むことにします。



2.スイッチを押すとLEDがオンし離すとオフするプログラム
スイッチS1を押している時だけLED D1がオンし、スイッチを離すとLEDはオフします。その様子が下記のビデオです。

下記がその制御プログラムです。

#define S1 A1   // スイッチS1 A1ピン     :モード切替SW
#define S2 A2   // スイッチS2 A2ピン     :ラップタイマーリセット
#define S3 A3   // スイッチS3 A3ピン
#define D1 13   // LED D1 1: off, 0: On
#define D2 12   // LED D2
#define D3 11   // LED D3
#define D4 10   // LED D4
#define ON 0    // LED is on
#define OFF 1   // LED is off

void setup ()
{
  pinMode(D1, OUTPUT);          //LED  D1の初期化
  digitalWrite(D1, OFF);
  pinMode(S1, INPUT);          
}

/* Main program */
void loop()
{
  if (digitalRead(S1) == 0)
    digitalWrite(D1, ON);
  else
    digitalWrite(D1, OFF);
}

3. 一度スイッチを押すとLEDがオンし、もう一度押すとオフするプログラム
スイッチS2を押すとLED D2がオンします。スイッチを離してもLEDはオフしません。もう一度スイッチを押すとLEDはオフします。その様子が下記のビデオです。


下記がその制御プログラムです。
#define S1 A1   // スイッチS1 A1ピン
#define S2 A2   // スイッチS2 A2ピン
#define S3 A3   // スイッチS3 A3ピン
#define D1 13   // LED D1 1: off, 0: On
#define D2 12   // LED D2
#define D3 11   // LED D3
#define D4 10   // LED D4
#define ON 0    // LED is on
#define OFF 1   // LED is off

byte S2Latch = 0;   //
boolean D2On = false;
void setup ()
{
  pinMode(D2, OUTPUT);          //LED  D2の初期化
  digitalWrite(D2, OFF);
  pinMode(S2, INPUT);
}

void loop()
{
  if ( digitalRead(S2) == 0) {
    if (S2Latch == 0) {
      S2Latch = 1;
      digitalWrite(D2, D2On);
      D2On = !D2On;
    }
  } else S2Latch = 0;
}




0 件のコメント:

コメントを投稿