(2015.9.1 作成)
Arduino版のTickerはTimerOneクラスをラッピングしているだけです。このためTimerOneクラスをインストールしている必要があります。こちらに簡単にインストール方法を記載していますが、あまり悩むことはないと思います。
Arduino UNOの場合以下の3種類のタイマが内蔵されており、それぞれ以下の用途に使用されています。今回Tickerクラスが使用するTimerOneはその名の通りTimer1を使用しています。
|
bit幅 | PWM |
使用されている関数 |
Timer0 | 8bit | 5,6 |
delay, millis, micros など |
Timer1 | 16bit | 9,10 | Servo |
Timer2 | 16bit | 3,11 |
tone |
管理人が使ってみたところ割り込み間隔を数us程度に短くしたり、500msを超えるほど長くした場合はあまり正しくない時間間隔になっていました。使用される場合は事前に確認されることをお奨めします。
またArduinoの関数を呼び出しているのでSTM32版と違い任意の関数名を呼び出すことが出来ます。
コンストラクタ |
||
プロトタイプ |
Ticker( void (*Callback)(void), const uint16_t &TickInterval, const DKS::TimeUint &timeUnit): |
|
戻り値 |
なし |
|
引数 |
Callback |
割り込みで呼び出される関数です。 void Foo(void)形式です。 |
TickInterval |
割り込みの時間間隔 |
|
timeUnit |
タイマの動作単位 usまたはms 未指定の場合 msになる |
|
備考 |
|
以下のコードでPin4を500ms単位で上げ下げします。もちろんLEDを接続していれば点滅させられます。
#include <Wire.h> //最初のコンパイル時だけコメント解除 #include <SPI.h> #include <TimerOne.h> #include "DKS_GPIO_Arduino.h" #include "DKS_Timer_Arduino.h" DKS::DigitalOut *led; //LED DKS::Ticker *ticker; void CallBack(void) { led->toggle(); } void setup() { led = new DKS::DigitalOut(4); // D4ピンにLEDを接続 ticker=new DKS::Ticker(&CallBack, 500, DKS::TimeUnit_MilliSec); } void loop() {}