第1回 Arduinoの基礎 – スイッチのオン・オフを読み取る

スイッチのオン・オフを読み取る

スイッチを押した時だけ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);
}
カテゴリー: 第1回 Arduinoの基礎   パーマリンク

コメントは受け付けていません。