Arguments

はじめに

LEDの点灯・消灯する関数を定期的に実行させ、LEDの明るさを変化させます。

プログラム

定義等

1
2
3
4
5
6
7
8
9
#include <Arduino.h>
#include <Ticker.h>

// attach a LED to GPIO 21
#define LED_PIN 21

Ticker tickerSetHigh;
Ticker tickerSetLow;
 

LEDを接続するピン番号をLED_PINとして定義します。

tikerSetHighとtickerSetLowは、それぞれ、Ticker型の変数で、定期的に実行する関数の設定を行うためのものです。

setPin()

10
11
12
13
void setPin(int state) {
  digitalWrite(LED_PIN, state);
}
 

digitalWrite()を利用して、LED_PINに接続したLEDを点灯(stateがHIGH)、消灯(stateがLOW)します。

setup()

14
15
16
17
18
19
20
21
22
23
24
void setup() {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(1, LOW);
  
  // every 25 ms, call setPin(0) 
  tickerSetLow.attach_ms(25, setPin, 0);
  
  // every 26 ms, call setPin(1)
  tickerSetHigh.attach_ms(26, setPin, 1);
}
 

pinMode()を使って、LED_PINを出力モードに設定します。次に、digitalWrite()で、1番ピンをLOWにします。ただ、なぜ1番ピンをLOWにするかはよくわかりません。LED_PINの気もしますが…

19行目のtickerSetLow.attach_ms()で、25ミリ秒ごとに、setPin()を呼び出すように設定します。このとき、setPin()に対して、attach_ms()の第3引数の0を渡します。0を渡すので、LEDを消灯します。

22行目のtickerSetHigh.attach_ms()は、26ミリ秒ごとに、setPin()を呼び出します。こちらは、setPin()への引数は1なので、LEDを点灯させます。

25ミリ秒ごとに消灯、26ミリ秒ごとに点灯するので、650ミリ秒周期で明るさが変化します。

loop()

25
26
27
void loop() {

}

何もしません。

バージョン

Hardware:ESP-WROOM-32
Software:Arduino core for the ESP32 2.0.4

最終更新日

September 4, 2022

inserted by FC2 system