【ESP32プログラム】タイマーを使ってみよう
delay関数を使って周期的っぽい処理をすることはできますが、タイマを使った方が周期的処理はタイマを使う方が見通しがよいですし、delay関数は一定時間プログラムを留めているので正確には周期処理ではありません。今回はタイマの簡単なプログラムを紹介します。
プログラム
タイマを簡単に使うのに「uTimerLib」ライブラリを使います。
Arduino SDKのライブラリマネージャで「uTimerLib」を検索してインストールしたらすぐに使えるようになります。
今回のプログラムはタイマを使って1秒毎にESP32に内蔵されているLEDを点灯と消灯を切り替えるものを作ります。
プログラムを以下に示しますが、主要な部分を2つです。
ライブラリのインクルード「#include <uTimerLib.h> 」とタイマ設定「TimerLib.setInterval_us(blink_led, 1000000);」です。
2つ目のタイマ設定は「1000000=1秒」毎に「blink_led」関数を実行するだけです。ここに処理させたい関数を書けばよいだけです。関数の中身は好きに書けば、その処理をタイマの設定時間毎に処理されることになります。
#include <uTimerLib.h> // タイマ用ライブラリ Arduino SDKのライブラリマネージャでインストールすること
const int LED = 2;
int led_on = 0;
void setup() {
pinMode(LED, OUTPUT);
// タイマ割り込み設定
TimerLib.setInterval_us(blink_led, 1000000); // 1秒毎に点滅
}
void loop() {
// 今回は処理なし
}
// LED点灯・消灯切替関数
void blink_led() {
led_on = ~led_on; // 値を反転
digitalWrite(LED, led_on); // LEDのON・OFF制御
}