Arduino nano every のタイマ―割込み
Arduino Nano Every は以前のArduino UNO など Atmega328 で使えた、TimerOneやMsTimer2
が使えません。

探してみたらArduino Nano Everyで使いやすいタイマーありました。ライブラリマネージャーでmegaAVR_TimerInterrupt が検索すると出てきて、インストールして、TimerInterruptTest.ino を起動すると1秒間隔でLEDがON-OFFします。サンプルは長いです。

でも、timer1だけ抜き出すと簡単。
これでloop内のdelay(1000)で止まってるけど100ms毎にLEDを点滅。文字数制限のため変数名短縮、最初の2行はincludeの前にdefine入れとかないとエラーになります。


#define USE_TIMER_1 true // これをinclundeの前で定義しないとエラーになる
#define TIMER1_INTERVAL_MS 1000

#include "megaAVR_TimerInterrupt.h"

void TimerHandler1()
{
static bool toggle1 = false;
digitalWrite(LED_BUILTIN, toggle1);
toggle1 = !toggle1;
}

void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
ITimer1.init();
ITimer1.attachInterruptInterval(TIMER1_INTERVAL_MS , TimerHandler1);
}

void loop()
{
delay(10000);
}


コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeLog -