はじめに
LEDの点灯・消灯する関数を定期的に実行させ、LEDを点滅させます。
プログラム
定義等
|
|
LEDを接続するピン番号をLED_PINとして定義します。
blinkerとtoggler、changerは、それぞれ、Ticker型の変数で、定期的に実行する関数の設定を行うためのものです。
blinkerPaceは点滅の周期、togglePeriodは、点滅をする時間と消灯をする時間の間隔を示します。
change()
|
|
もともと0.1だったblinkerPaceを0.5にします。
0.1秒周期で点滅していたLEDが、0.5秒周期の点滅に変わります。
blink()
|
|
LED_PINをdigitalRead()で読み取って、その値を!で反転し、digitalWrite()で書き込むことで、LEDが点灯しているときは消灯、消灯しているときは、点灯させます。
実際に動かしてみると動作するので、ESP32の場合は、pinMode()を意識しなくていいのかもしれません。
toggle()
|
|
isBlinkingがtrueならば、blinker.detach()を呼ぶことで、関数(blink())の実行を停止します。
isBlinkingがfalseならば、blinker.attach()を呼び出すことで、blink()を定期実行(blinkerPace秒ごとに)させます。
digitalWrite()で、LEDを消灯します。
setup()
|
|
pinMode()を使って、LED_PINを出力モードに設定します。
toggler.attach()を使って、togglePeriod(=5)秒毎に、toggle()関数を呼び出すように設定します。
changer.once()を使って、30秒後に一度だけchange()関数を呼び出すように設定します。
toggle()とonce()は、以下のように呼び出されます。LEDの状態が点滅の間は、blink()が点滅周期(blinkerPace)毎に呼び出されます。
秒数 | 実行関数 | LEDの状態 | 点滅周期 |
---|---|---|---|
5秒 | toggle() | 点滅 | 0.1秒 |
10秒 | toggle() | 消灯 | |
15秒 | toggle() | 点滅 | |
20秒 | toggle() | 消灯 | |
25秒 | toggle() | 点滅 | |
30秒 | toggle(), once | 消灯 | 0.5秒 |
40秒 | toggle() | 点滅 | |
45秒 | toggle() | 消灯 |
loop()
|
|
何もしません。
バージョン
Hardware: | ESP-WROOM-32 |
Software: | Arduino core for the ESP32 2.0.4 |
最終更新日
November 1, 2022