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

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


各スリープ動作に於ける動作クロック範囲と復帰起動要因
各スリープ動作に於ける動作クロック範囲と復帰起動要因
※ATMEL ATmega48/88/168 データシート日本語版
http://reef.path.ne.jp/~hero/pdf/mega88.pdf


サンプルスケッチ:パワーダウン+外部割り込みによる復帰
#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

コメント

Secret

Ads by Google
最近の記事
カテゴリ
Arduino (36)
電子工作 (75)
スタバッテルミン (5)
スタバカップアンプ (9)
電光掲示板 (4)
イベント (21)
太陽電池 (12)
ニキシー管 (19)
ARM系 (8)
PIC系 (20)
USBデバイス (7)
V850系 (17)
Xfind (6)
プログラミング (25)
Android (3)
未分類 (7)
Amazon.co.jp
最近のコメント
ビーコン菅原:MOS FETを使ったマイコン周辺回路の電源の制御方法 (02/10)
arms22:MPPT太陽電池充電(7) (02/09)
arms22:ガリレオ・セブン! (02/08)
Galileo7:ガリレオ・セブン! (02/08)
arms22:Arduinoで遊ぼう - SDメモリカードを読み書きする (01/29)
:目次:Arduino (01/29)
arms22:Arduinoで遊ぼう - SDメモリカードを読み書きする (01/27)
通りすがり:10.3用twitterクライアント「twifp」 (01/21)
最近のトラックバック
以前の記事
リンク
タグ
プライバシーポリシー
当サイトでは、第三者配信による広告サービスを利用しています。このような広告配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示するため、当サイトや他サイトへのアクセスに関する情報 (氏名、住所、メール アドレス、電話番号は含まれません) を使用することがあります。このプロセスの詳細やこのような情報が広告配信事業者に使用されないようにする方法については、ここをクリックしてください。