基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
EEPROM
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
Ethernet
Ethernetサーバー
Ethernetクライアント
Firmata
周期処理
省電力
時計(RTC)
SoftwareSerial
ユーティリティ
周期処理
周期的な処理を行うためのライブラリです。
attachCyclicHandler
概要
指定した周期間隔(ms)で処理する関数を登録します。関数呼び出し時にシステム開始からの時間(ms)が引数として取得できます。
文法
attachCyclicHandler(unsigned char number, void(*)(unsigned long) function, unsigned int time)
パラメータ
number: 0~7(関数の識別番号)
function: 関数名
time: 周期(ms)戻り値
なし
注意
loop関数内で処理されるため、loop周期よりも短い間隔を指定しても正しく実行されません。
detachCyclicHandler
概要
周期関数の登録を解除します。
文法
detachCyclicHandler(unsigned char number)
パラメータ
number: 0~7(関数の識別番号)
戻り値
なし
attachIntervalTimerHandler
概要
1ms間隔で実行したい関数を登録します。
文法
attachIntervalTimerHandler(void(*)(unsigned long) function)
パラメータ
function: 関数名
戻り値
なし
補足
以下の関数が呼び出し可能です。
pinMode(), digitalWrite(), digitalRead(), millis(), micros(), delayMicroseconds(), min(), max(), constrain(), map(), lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(), randomSeed(), random()
Note: pinMode(), digitalWrite()は、loop()内で使用しているピンと同じ番号を指定すると誤動作する可能性があります。
detachIntervalTimerHandler
概要
1msインターバル関数の登録を解除します。
文法
detachIntervalTimerHandler()
パラメータ
なし
戻り値
なし
attachMicroIntervalTimerHandler
概要
指定された間隔[us]で実行したい関数を登録します。
文法
attachMicroIntervalTimerHandler(void(*)(unsigned long) function, uint16_t interval)
パラメータ
function: 関数名
interval: 周期[us]戻り値
なし
補足
以下の関数が呼び出し可能です。
pinMode(), digitalWrite(), digitalRead(), millis(), micros(), delayMicroseconds(), min(), max(), constrain(), map(), lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(), randomSeed(), random()
Note: pinMode(), digitalWrite()は、loop()内で使用しているピンと同じ番号を指定すると誤動作する可能性があります。
関数の登録によりtone()が使用できなくなります。tone()から変更する場合は、HOOK_TIMER_CHANNELを変更してください。
detachMicroIntervalTimerHandler
概要
マイクロ秒のインターバル関数の登録を解除します。
文法
detachMicroIntervalTimerHandler()
パラメータ
なし
戻り値
なし
サンプルプログラム
100msごとの周期関数を呼び出し、周期関数で取得した時間をloop内で500msごとに出力します。
#include <Arduino.h>
void test_cyclic_handler(unsigned long u32ms);
unsigned long time;
void setup()
{
Serial.begin(9600);
attachCyclicHandler(0, test_cyclic_handler, 100);
}
void loop()
{
Serial.println(time);
delay(500);
}
void test_cyclic_handler(unsigned long u32ms)
{
time = u32ms;
}