tv와 선풍기를 제어하기 위한 리모컨 신호 발신기를 만드는 중인데
리모컨의 ir신호 조합을 알아야 하기에
아두이노로 ir신호를 십진수와 16진수로 표시해 주는 표시기를 만들어 보았다.
예전에는 그냥 간이로 만들어서 시리얼 모니터로 신호를 분석했는데
발신기를 만들면 여러 리모컨을 사용하게 될수 있어서 그냥 케이스를 만들어서
필요할때 사용하기로 결정했다.
아누이노 우노는 부피가 크다보니 생가보다 사용할 일이 없어 남아도는 아두이노를
소진할 겸 우노로 만들기로함.
시리얼 모니터 없이 바로 확인가능하게 디스플레이를 추가함
oled가 아무래도 보기도 좋고 컴팩트해서 oled 0.96인치를 사용함
ir 수광부와 아두이노는 1k옴 저항을 연결하고 아두이노 7번핀에 연결
* 중간 부분은 인쇄 편의를 위해서 분리해서 인쇄후 접착제로 붙여서 사용함
#include <IRremote.h>
#include "U8glib.h"
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
dis_oled2("init ... ","","","","");
delay(100);
}
void dis_oled2(String msg1, String msg2, String msg3, String msg4, String msg5) {
int idx[] = {10, 23, 36, 49, 62};
String str[5];
str[0] = msg1;
str[1] = msg2;
str[2] = msg3;
str[3] = msg4;
str[4] = msg5;
u8g.firstPage();
do {
u8g.setFont(u8g_font_unifont);
for (int i = 0; i < 5; i++) {
u8g.setPrintPos(0, idx[i]);
u8g.print(str[i]);
}
} while (u8g.nextPage());
}
void loop() {
if (irrecv.decode(&results)) {
unsigned int value = results.value; //value =>dec, 10십진수임
Serial.println(String(value, HEX));
dis_oled2("HEX:" + String(value, HEX),"DEC:" + String(value),"","","");
Serial.println(value);
irrecv.resume();
}
delay(100);
}
'diy > 아두이노' 카테고리의 다른 글
[에러]irremote 라이브러리 결과가 항상 ffff(65536) (1) | 2024.01.14 |
---|---|
아두이노 나노로 리모컨 카운터(계수기) 만들기 (0) | 2024.01.13 |
이산화탄소 측정기(MH-Z14) 만들기 2 (0) | 2022.10.07 |
이산화탄소 측정기(MH-Z14) 만들기 1 (0) | 2022.10.07 |
미세먼지 측정기(sds011) 2 (0) | 2022.09.29 |