Ticker (Arduino)

(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

TimeUnit型

未指定の場合 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() {}