なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduinoで遊ぼう - Arduinoをスリープさせる

Posted by arms22 on 2009年01月19日 4  0

Arduinoでスリープ機能を使うにはavr/sleep.hをインクルードし、set_sleep_mode関数、sleep_mode関数を使う。こんな感じ。

#include <avr/sleep.h>

void loop() {
  set_sleep_mode(SLEEP_MODE_IDLE);
  sleep_mode();  //ここでsleep
}
このままでも特に問題ないんだけど、生のavr-gccが見えてよくない。Arduinoっぽくないのでスリープ機能を使うためのSleepライブラリを作成した。

ダウンロード: Sleepライブラリ
http://xfind.hp.infoseek.co.jp/electric/arduino/Sleep001.zip

使い方
1.Sleepライブラリをarduino-0012/hardware/libraries/以下にコピー。
2.新しいスケッチを作成。
3.メニューからSketch > Import Library > Sleepを選択。
4.スリープさせたいタイミングでスリープメソッドを呼ぶ。

Sleepライブラリでサポートしているスリープメソッドは次の6つ。
 メソッド
アイドルモードidle
ADCノイズ低減モードnoiseReduction
パワーセーブモードpowerSave
スタンバイモードstandBy
パワーダウンモードpowerDown
パワーダウン+外部割り込みによる復帰モードpowerDownAndWakeupExternalEvent


各スリープ動作に於ける動作クロック範囲と復帰起動要因
wakeup-source-in-sleep-modes.png


サンプルスケッチ:パワーダウン+外部割り込みによる復帰
#include <Sleep.h>

void setup() {
  pinMode(2,INPUT); // INT0
  pinMode(13,OUTPUT); // LED
}

void loop() {
  digitalWrite(13,HIGH); // sets the LED on
  delay(3000); // waits for a second
  digitalWrite(13,LOW);
  Sleep::powerDownAndWakeupExternalEvent(0);
}
パワーダウンモードと外部割り込み(INT0)による復帰起動のサンプルを解説します。pin2は外部割り込み(INT0)の端子です。入力モードに設定します。pin13はLEDに接続されています。出力に設定します。スケッチでは起動後LEDを3秒点灯させてから、LEDを消灯し、外部割り込み(INT0)が発生するまでパワーダウンモードに入ります。外部割り込み(INT0)が発生したら復帰起動します。
powerDownAndWakeupExternalEventメソッドの引数は外部割り込みの番号です。

Arduino Duemilanove Wake Up on a External Event
上記スケッチ用の接続図です。pin2を10kΩ程度の抵抗でプルアップし、プッシュスイッチ経てGNDに接続します。スイッチオフ時はプルアップ抵抗によりpin2はHiになり、スイッチオン時はpin2はGNDに接続されLowになります。外部割り込み(INT0)はpin2のHi→Low変化Lowレベルによって発生します。



サンプルスケッチ: パワーダウン+外部割り込みによる復帰
http://xfind.hp.infoseek.co.jp/electric/arduino/sketch_090115a.pde

avr-libc: : Power Management and Sleep Modes
http://www11.ocn.ne.jp/~akibow/avr-libc-user-manual-1.4.3/group__avr__sleep.html

Arduino Playground - ArduinoSleepCode
http://www.arduino.cc/playground/Learning/ArduinoSleepCode




Making Things Talk -Arduinoで作る「会話」するモノたち
Tom Igoe
オライリージャパン
売り上げランキング: 8025

該当の記事は見つかりませんでした。