Arduinoで遊ぼう - Arduinoをスリープさせる
Posted by arms22 on 2009年01月19日

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 |
各スリープ動作に於ける動作クロック範囲と復帰起動要因

サンプルスケッチ:パワーダウン+外部割り込みによる復帰
#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メソッドの引数は外部割り込みの番号です。

上記スケッチ用の接続図です。pin2を10kΩ程度の抵抗でプルアップし、プッシュスイッチ経てGNDに接続します。スイッチオフ時はプルアップ抵抗によりpin2はHiになり、スイッチオン時はpin2はGNDに接続されLowになります。外部割り込み(INT0)はpin2の
サンプルスケッチ: パワーダウン+外部割り込みによる復帰
http://xfind.hp.infoseek.co.jp/electric/arduino/sketch_090115a.pde
avr-libc:
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で作る「会話」するモノたち
-Arduinoで作る「会話」するモノたち
posted with amazlet at 09.01.18
Tom Igoe
オライリージャパン
売り上げランキング: 8025
オライリージャパン
売り上げランキング: 8025
該当の記事は見つかりませんでした。