最近ESP32を使用しています
理由としてはESP32でBLE通信をしたいためです
その前に、ESP32でTImer割り込みはどうすればいいんだ?ということで色々と調べたときになかなか参考がでてこない!
サンプルプログラムはあるのですが、わかりにくいということで自分なりにESP32についてのTimer割り込み方法についてまとめてました
今回はスイッチサイエンスから発売してあるESP32開発ボードで試していました
また、ESP32をArduino化して使用しています
Arduino化については以下のURLを参照してください
ESP32で遊んでみる
先日東京に行きました 秋葉原を徘徊しているとESP32開発ボードが販売されていたので早速購入をしました 備忘録ついでに使い方をメモします
とりあえず先にソースコードを掲載します
ESP32はTimer割り込みをするときにセマフォ管理をしなければなりません
またプリスケーラの設定も必要です
timerAttachInterrupt()にてタイムアウトしたときに呼ばれる関数を定義しています
timerAlarmWrite()にてタイマーの設定をしています
上記のプログラムは1秒毎にonTimerを呼び出しています
timerAlarmEnable()にてタイマーをスタートさせています
より深く知りたい人はexampleを参考にしてみてください
スケッチの例 -> ESP32 -> Timer -> RepeatTimer です
ESP32のサンプルファイルにBLE通信をするサンプルファイルがありますが、void loop()で値を更新するものでした
TImerで値更新ができれば高度なものができそうです
コメント
複数タイマーを使用したいときはどのようにすればよいですか?
コメントありがとうございます
ESP32で複数のタイマーを使いたいという質問に対して回答致します
現在(2019/05/05)におけるArduinoにてESP32でタイマーを使う方法を確認したところ、どうやらTicker.hで簡単にタイマー処理ができるようになっていました
複数のタイマーを使用しているサンプルを下記に記述しておきますので参考にしてください
#include "Arduino.h"
#include "Ticker.h"
Ticker helloTimer;
Ticker worldTimer;
void hello() {
Serial.print("Hello");
}
void world() {
Serial.println(" World");
}
void setup() {
Serial.begin(115200);
// 25msでfunc helloを呼び出し
helloTimer.attach_ms(25, hello);
// 26msでfunc worldを呼び出し
worldTimer.attach_ms(26, world);
}
void loop() {
}