スイッチのオン・オフを読み取る
![LED&Switch](http://www.seminar.aizu.or.jp/wp-content/uploads/2012/07/LEDSwitch-1024x555.png)
スイッチを押した時だけLEDが点灯する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #define LED_PIN 3
#define SW_PIN 4
int swVal = 0;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(SW_PIN, INPUT);
}
void loop()
{
swVal = digitalRead(SW_PIN);
if (swVal == HIGH) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
} |
スイッチを押すとLEDのオン・オフが反転する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #define LED_PIN 3
#define SW_PIN 4
int swVal = 0;
boolean ledState = false;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(SW_PIN, INPUT);
}
void loop()
{
swVal = digitalRead(SW_PIN);
if (swVal == HIGH) {
ledState = !ledState;
}
if (ledState) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
} |
スイッチを押すとLEDのオン・オフが反転する(改良版1)
スイッチがオフからオンに切り替わった時のみLEDを反転させる
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #define LED_PIN 3
#define SW_PIN 4
int swVal = 0;
int swValOld = 0;
boolean ledState = false;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(SW_PIN, INPUT);
}
void loop()
{
swVal = digitalRead(SW_PIN);
if (swVal == HIGH && swValOld == LOW) {
ledState = !ledState;
}
swValOld = swVal;
if (ledState) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
} |
スイッチを押すとLEDのオン・オフが反転する(改良版2)
スイッチのチャタリング対策を行う
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| #define LED_PIN 3
#define SW_PIN 4
int swVal = 0;
int swCount = 0;
boolean ledState = false;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(SW_PIN, INPUT);
}
void loop()
{
swVal = digitalRead(SW_PIN);
if (swVal == HIGH) {
swCount += 1;
} else {
swCount = 0;
}
if (swCount == 10) {
ledState = !ledState;
}
if (ledState) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
delay(1);
} |