Last active
August 2, 2020 07:28
-
-
Save sp-ice/2de0f0fd6bb30c1cef10 to your computer and use it in GitHub Desktop.
Arduinoで室温取得+エアコン操作
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <avr/pgmspace.h> | |
//通信 | |
char serial_recv; | |
//LED | |
char led_pin = 13; | |
//気温 | |
int Analog_in = 0; // アナログ入力ピン番号 | |
int A_val; // アナログ入力値(0~203) | |
double tempC = 0; // 摂氏値( ℃ ) | |
//赤外線 | |
int ir_out = 2; | |
int last = 0; | |
unsigned long us = micros(); | |
PROGMEM prog_uint16_t data_on[] = {345,166,47,125,45,125,45,40,46,39,45,38,47,124,46,38,47,39,45,125,46,123,47,40,45,124,46,39,46,39,45,125,45,125,46,38,46,124,46,123,48,39,46,38,47,125,46,39,45,40,45,123,47,40,45,39,45,39,46,38,46,40,45,38,46,40,45,39,46,40,45,39,46,38,46,39,45,40,45,40,45,39,45,40,45,38,46,38,47,40,46,39,46,124,46,38,47,39,46,39,45,40,46,39,46,125,45,124,46,38,47,126,44,39,46,39,46,125,46,38,47,123,47,39,46,38,46,40,45,40,45,38,47,124,47,125,45,40,45,124,47,124,47,39,46,39,45,38,47,39,46,37,47,39,45,124,47,39,45,126,45,40,45,38,47,39,46,39,45,39,46,40,45,40,45,40,45,38,47,39,46,37,48,39,45,40,45,40,45,38,47,40,45,39,45,38,47,39,46,39,46,39,45,40,45,39,45,38,47,40,45,39,46,39,45,40,46,39,45,39,46,40,45,39,46,38,47,40,45,39,46,39,46,40,45,40,45,40,45,38,47,40,45,39,45,39,46,39,46,40,45,38,46,39,46,38,46,39,46,38,46,40,45,39,45,40,45,39,46,40,44,40,45,40,44,125,46,38,47,125,46,124,46,124,47,40,45,39,46,39,45,1322,345,167,46,123,47,124,46,39,46,39,46,40,45,124,47,38,46,40,45,124,46,125,46,38,47,125,46,39,45,39,46,124,46,125,46,38,47,125,45,125,46,39,46,39,45,124,46,40,46,38,46,125,46,39,46,39,45,40,45,40,45,40,45,40,45,40,45,39,46,39,45,39,46,39,46,39,46,39,46,39,46,39,45,40,46,39,45,39,46,39,45,40,45,120,50,38,47,39,46,39,45,40,45,39,45,125,46,124,46,38,47,124,46,40,45,40,45,125,45,40,45,125,45,40,45,40,45,40,45,38,46,40,46,124,46,125,45,40,45,125,45,125,45,39,45,40,46,39,45,39,46,39,46,39,46,125,45,39,46,118,52,39,45,41,44,40,45,40,45,39,46,38,46,38,46,40,46,39,46,39,46,39,46,40,45,40,45,38,46,39,46,39,45,40,45,39,46,39,46,38,46,39,46,39,46,39,45,40,48,36,48,36,46,40,45,40,45,40,45,39,46,39,45,40,45,39,46,40,45,39,46,40,48,36,45,40,45,40,45,38,46,40,45,40,45,40,45,40,48,37,48,35,47,38,46,38,50,36,46,39,46,39,48,36,49,36,45,40,45,38,50,36,48,36,48,122,45,39,49,121,49,120,50,121,46,41,47,37,48,35,46}; | |
PROGMEM prog_uint16_t data_off[] = {349,164,48,122,49,122,48,36,48,36,48,37,48,122,48,36,49,36,48,121,49,122,49,36,48,121,49,36,48,38,48,121,49,121,50,35,49,122,48,122,49,38,47,36,49,121,49,36,48,37,48,121,49,36,49,36,49,36,48,36,48,36,49,36,49,36,48,36,49,36,48,36,48,37,48,36,48,36,48,37,48,36,48,36,49,38,47,37,48,36,49,36,49,36,48,36,48,37,48,35,49,36,49,36,48,122,49,121,49,38,47,121,49,36,49,36,48,122,48,36,48,122,49,36,48,36,49,36,48,36,48,36,48,121,50,121,49,36,49,121,49,121,49,37,48,36,48,36,49,36,49,36,48,36,49,121,49,37,48,121,49,36,48,36,49,36,49,36,48,37,48,36,49,36,49,36,48,36,49,37,48,37,48,38,47,37,48,36,48,36,49,36,49,36,48,36,48,36,49,36,49,36,48,37,48,37,48,36,49,36,49,36,49,36,49,36,48,36,48,37,48,36,48,36,49,38,47,36,50,37,47,38,47,37,48,36,49,37,48,35,49,35,49,36,49,36,49,36,49,37,48,36,50,35,49,38,47,37,48,36,49,36,48,36,48,36,48,36,48,36,49,37,48,45,50,111,49,36,49,121,49,121,49,121,49,121,50,122,48,122,49,1318,349,163,49,122,49,121,49,36,49,36,48,37,48,122,49,36,48,36,49,121,49,121,49,36,48,121,49,36,48,38,47,121,49,121,49,36,49,121,49,122,49,36,48,36,48,122,48,36,48,36,49,122,48,37,48,35,49,37,48,37,48,37,48,36,50,35,49,36,49,36,49,37,48,35,49,36,48,36,48,36,48,38,47,36,49,36,49,36,49,36,48,36,49,37,48,36,49,36,49,36,48,36,48,36,49,121,49,121,49,36,48,121,49,37,48,36,49,122,48,37,48,121,50,36,49,35,49,36,49,36,49,36,49,121,49,121,49,36,48,121,49,121,49,36,49,36,49,36,48,36,49,36,49,36,49,121,50,36,49,121,49,36,49,36,49,36,49,37,48,36,49,36,48,36,49,36,49,36,49,36,49,36,49,36,49,37,48,37,48,36,48,36,49,36,49,36,49,36,49,36,49,35,49,36,48,36,48,37,48,36,49,36,49,36,49,36,49,36,49,36,49,36,49,36,50,35,49,36,48,38,46,38,47,37,48,37,48,36,48,36,50,37,47,36,49,36,48,36,49,36,49,36,49,35,49,36,49,36,49,36,48,36,48,36,48,36,49,36,49,36,49,35,49,45,50,111,49,36,48,122,49,121,49,121,50,121,49,122,49,121,49}; | |
void setup(){ | |
pinMode(ir_out, OUTPUT); | |
pinMode(led_pin, OUTPUT); | |
Serial.begin(9600); | |
} | |
void loop(){ | |
while(Serial.available() > 0){ | |
serial_recv = Serial.read(); | |
switch(serial_recv){ | |
case 'y': | |
digitalWrite(led_pin, true); | |
sendSignal('y'); | |
break; | |
case 'n': | |
digitalWrite(led_pin, false); | |
sendSignal('n'); | |
break; | |
} | |
} | |
//気温 | |
A_val = analogRead( Analog_in ); | |
tempC = (5 * A_val) / 1024.00 * 100.00; | |
Serial.println( tempC ); | |
delay(100); | |
} | |
// dataからリモコン信号を送信 | |
void sendSignal(char com) { | |
int dataSize; | |
if(com == 'y'){ | |
dataSize = sizeof(data_on) / sizeof(data_on[0]); | |
}else if(com == 'n'){ | |
dataSize = sizeof(data_off) / sizeof(data_off[0]); | |
}else{ | |
return; | |
} | |
for (int cnt = 0; cnt < dataSize; cnt++) { | |
// dataは10us単位でON/OFF時間を記録している | |
unsigned long len; | |
if(com == 'y'){ | |
len = pgm_read_word_near(data_on + cnt)*10; | |
}else if(com == 'n'){ | |
len = pgm_read_word_near(data_off + cnt)*10; | |
}else{ | |
return; | |
} | |
unsigned long us = micros(); | |
do { | |
digitalWrite(ir_out, 1 - (cnt&1)); // cntが偶数なら赤外線ON、奇数ならOFFのまま | |
delayMicroseconds(8); // キャリア周波数38kHzでON/OFFするよう時間調整 | |
digitalWrite(ir_out, 0); | |
delayMicroseconds(7); | |
} while (long(us + len - micros()) > 0); // 送信時間に達するまでループ | |
} | |
return; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment