省電力

KURUMIを省電力で動作するためのライブラリです。マイコンはクロックをベースに動いています。クロックの周波数が高いとマイコンは早く動きます。しかしクロックの周波数を高くすると電流が大きくなります。例えば電池を使っている場合は早く切れてしまうことになります。電池を長く使用できるようにするには、プログラムの処理によってクロックの周波数を低くしたり、止めるようにします。例えば1分に1回温度を測るとき、温度を測るときだけクロックを動かし、それ以外はクロックを止めればよいことになります。

setPowerManagementMode

概要

省電力モードを設定します。

文法

setPowerManagementMode(mode)
setPowerManagementMode(mode, lower, upper)

パラメータ

mode:
  PM_NORMAL_MODE(通常モード)
  PM_STOP_MODE(delay()関数実行時にSTOPモードに移行)
  PM_SNOOZE_MODE(analogRead()関数実行時にSNOOZEモードに移行
lower: 0~1023(SNOOZEから復帰する下限アナログ値、下位2ビットは無効)
upper: 0~1023(SNOOZEから復帰する上限アナログ値、下位2ビットは無効

戻り値

なし

getPowerManagementMode

概要

現在の省電力モードを取得します。

文法

unsigned char getPowerManagementMode()

パラメータ

なし

戻り値

PM_NORMAL_MODE, PM_STOP_MODE, PM_SNOOZE_MODE

setOperationClockMode

概要

クロックの動作速度を設定します。

文法

setOperationClockMode(unsigned char mode)

パラメータ

mode:
  CLK_HIGH_SPEED_MODE(高速、32MHz)
  CLK_LOW_SPEED_MODE(低速、32.768kHz)

戻り値

なし

補足

省電力モード設定時(STOP/SNOOZE)、低速に設定することはできません。無効になります。

getOperationClockMode

概要

クロックの設定を取得します。

文法

unsigned char getOperationClockMode()

パラメータ

なし

戻り値

CLK_HIGH_SPEED_MODE, CLK_LOW_SPEED_MODE


サンプルプログラム

SNOOZEモードを使用して、analogRead(A0)が500~1023の値を取得したときに復帰して値を出力するプログラムです。


        #include <Arduino.h>
        void setup()
        {
          Serial.begin(9600);
          setPowerManagementMode(PM_SNOOZE_MODE, 500, 1023);
        }
        void loop()
        {
          int value = analogRead(A0);
          Serial.println(value);
          delay(100);
        }