2011年10月21日金曜日

タクトスイッチを使う。

Arduinoの5V出力をタクトスイッチにつなげて、
Arduinoの入力ピンで状態を受け取る。

LEDには330Ωの抵抗を使ったが、タクトスイッチには?
仮に抵抗を使わなかった場合には、
5V / 0Ω = ?
無限大の電流が流れて、ショートの状態となってしまう。

10KΩの抵抗を使う。
茶 黒       橙     金
1 0 x 1000  ±5%



スケッチはこのように書いた。
#define  LED  13
#define  SW   6

int val = 0;

void  setup()
{
  pinMode( LED, OUTPUT );
  pinMode( SW, INPUT );
}

void  loop()
{
  val = digitalRead( SW );
  if( val == HIGH ){
    digitalWrite( LED, HIGH );
  } else {
    digitalWrite( LED, LOW );
  }
}


これはスイッチを押している間だけLEDが点灯するスケッチ。
やはりスイッチはON/OFFに使いたい。

Arduinoは1秒間に数百万行のコードを実行できる。
指でスイッチを押している間にも、loop関数は何度も呼び出される事になる。

そのうちの押し初めの1回だけ検出する = 「前回がLOW、今回がHIGH」

#define  LED  13
#define  SW   6

int val = 0;
int valOld = 0;
int state = 0;

void  setup()
{
  pinMode( LED, OUTPUT );
  pinMode( SW, INPUT );
}

void  loop()
{
  val = digitalRead( SW );
  if( val == HIGH && valOld == LOW ){
    state = 1 - state;
    delay(10);
  }
  valOld = val;
  if( state == 1 ){
    digitalWrite( LED, HIGH );
  } else {
    digitalWrite( LED, LOW );
  }
}

0 件のコメント:

コメントを投稿