遙控器是LCD智能電視的開機必備,如果家里的電視遙控器壞了,那就只能錯過好節目了,這時有個備品那該多好啊。
本項目教大家自己動手DIY一個萬能電視遙控器。項目采用IR遙控技術,工作時遙控器將代碼發送給電視機,再由電視的MCU解碼并處理,來改變電視頻道。
項目開始前,我們首先須了解IR遙控的工作原理,知道遙控器發射的代碼,并制作自己的遙控解碼系統,再寫下所有按鈕(例如 CH+, CH-, VOL+, VOL-, POWER, Settings)的所有解碼值。然后,將這些值發送給Arduino來實現萬能遙控,并完成本項目。

項目元器件清單:
1) Arduino
2) IR LED
3) 輕觸開關
4) 1k歐姆電阻器 x11
5) 220歐姆電阻器
6) PCB和引線
7) 電池(3.7V)
Arduino電視遙控器電路非常簡單,如果使用的是Arduino Atmega328p芯片,就需要按照圖示電路進行時鐘和復位連接,圖中的ICSP可編程串行引腳用以上傳項目代碼,改變控制信號。

電路中,IR發光二極管的正極通過1k/220歐姆電阻器,連接于D3(數字引腳3);負極接地。11個輕觸開關用來處理11個不同的指令,它們的一端分別連接于D2-D13的不同數字引腳,另一端則分別通過一個1k歐姆電阻器接地。兩引腳插頭用來為電路和Arduino供電。
代碼如下:
#include
#include "LowPower.h"
IRsend irsend;
const int b1 = 2;
const int b2 = 4;
const int b3 = 5;
const int b4 = 6;
const int b5 = 7;
const int b6 = 8;
const int b7 = 9;
const int b8 = 10;
const int b9 = 11;
const int b10 = 12;
int timer;
int modeCounter = 0;
void wakeUp() {
timer = 0;
}
void setup() {
pinMode(b1, INPUT);
pinMode(b2, INPUT);
pinMode(b3, INPUT);
pinMode(b4, INPUT);
pinMode(b5, INPUT);
pinMode(b6, INPUT);
pinMode(b7, INPUT);
pinMode(b8, INPUT);
pinMode(b9, INPUT);
pinMode(b10, INPUT);
}
void loop() {
attachInterrupt(0, wakeUp, HIGH);
while (timer < 10000) {
if (digitalRead(b1) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b2) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b3) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b4) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b5) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b6) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b7) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b8) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b9) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
if (digitalRead(b10) == HIGH) {
timer = 0;
delay(50);
irsend.sendNEC(0x0000, 32); //Enter Remote Hex Value
}
delay(1);
timer = timer + 1;
}
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
上述代碼采用低功耗模式庫,以提高電池壽命,一次充電后可使用3-4個月。
審核編輯:湯梓紅
-
電視
+關注
關注
15文章
2607瀏覽量
77160 -
遙控器
+關注
關注
18文章
854瀏覽量
68038 -
Arduino
+關注
關注
189文章
6497瀏覽量
190533
發布評論請先 登錄
霍爾元件DH481在電視遙控器中的應用
技術再進化——工業遙控器技術要求更高
數字遙控器

RF遙控器廠家:射頻遙控器將成為未來的控制主流
如何選購適合的拷貝遙控器——增配遙控器教程來啦

遙控器解碼器怎么使用
藍牙語音遙控器方案

評論