前回の記事でリモコンの信号が受信できた。今回はエアコンのリモコン信号を取り込んで
室温の上昇をきっかけに自動起動できるようにしてみた。
赤外線LEDL12170を13ピン
温度センサー LM35DZのアナログ信号をA0ピンに接続
スケッチはこちら
#define PIN_IR 13
#define DEBOUNCEDELAY 500
float a_in;
float temp_c = 0;
short ARRAY_HIGHLOW[] = {4440,4444,512,1660,496,560,520,1652,440,1712,520,560,516,572,492,1656,516,568,512,576,500,1644,520,568,456,632,496,1656,512,1652,500,568,512,1652,512,1660,500,568,520,1644,440,1712,520,1648,484,1688,496,1660,516,1644,444,648,492,1656,512,572,492,568,528,560,480,608,492,568,516,568,508,1660,500,1652,524,564,436,648,492,568,520,568,492,568,520,564,520,560,440,648,500,1644,516,1660,496,1656,524,1648,492,1652,524,1676,492,5252,4452,4432,488,1688,492,564,528,1648,436,1708,524,564,484,600,492,1656,524,560,488,600,492,1652,528,560,480,608,512,1632,512,1660,492,568,528,1644,512,1660,492,568,528,1644,480,1672,520,1644,508,1668,492,1660,512,1660,476,588,540,1628,512,572,488,572,528,560,504,584,484,576,544,536,512,1660,492,1660,520,568,476,580,528,560,512,568,492,576,524,564,516,564,476,588,520,1648,512,1660,496,1656,516,1648,500,1660,540,1652,492,
};
void setup()
{ Serial.begin(9600);
pinMode(PIN_IR, OUTPUT);
}
void loop()
{ a_in = analogRead(0);
temp_c = ((5 * a_in) / 1024) * 100;
Serial.println( temp_c );
delay(1000);
static int s_iButtonState_prev = LOW;
static unsigned long s_ulTime_prev = 0;
int iButtonState = digitalRead(PIN_PUSHBUTTON);
if( temp_c>23 )
{
unsigned long ulTime = millis();
if( DEBOUNCEDELAY < (ulTime - s_ulTime_prev) )
{
sendSignal();
}
s_ulTime_prev = ulTime;
}
s_iButtonState_prev = iButtonState;
}
void sendSignal()
{
int iTimeLength;
unsigned long ulTimeStart;
int iCountHighLow = sizeof( ARRAY_HIGHLOW ) / sizeof( ARRAY_HIGHLOW[0] );
for( int iIndexHighLow = 0; iIndexHighLow < iCountHighLow; iIndexHighLow++ )
{
iTimeLength = ARRAY_HIGHLOW[iIndexHighLow];
ulTimeStart = micros();
do
{
digitalWrite( PIN_IR, 1 - (iIndexHighLow % 2) );
delayMicroseconds(8);
digitalWrite( PIN_IR, 0 );
delayMicroseconds(7);
} while( iTimeLength > micros() - ulTimeStart );
}
}
室温が23度以上になると赤外線LEDが働きエアコンを始動させる。
動作確認はガラケーで確認
これでリモコンいらず・・。
と思いきやONはできるがOFFは信号が違うらしく停止はできなかった。
ボタンは同じなんだけど。
出力が高いLEDを使おうとするとラズパイの3.3V出力では少々きつい。このあたりの動きはarduinoの得意とする分野かもしれない。しかしながらなぜか9Vバッテリー電源では動作しなかった。 設備との相性で今後もarduinoとラズパイを使い分けていきたい。