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 件のコメント:
コメントを投稿