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

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

電路中,IR發(fā)光二極管的正極通過1k/220歐姆電阻器,連接于D3(數(shù)字引腳3);負(fù)極接地。11個(gè)輕觸開關(guān)用來處理11個(gè)不同的指令,它們的一端分別連接于D2-D13的不同數(shù)字引腳,另一端則分別通過一個(gè)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個(gè)月。
審核編輯:湯梓紅
-
電視
+關(guān)注
關(guān)注
15文章
2609瀏覽量
77340 -
遙控器
+關(guān)注
關(guān)注
18文章
857瀏覽量
68272 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192279
發(fā)布評(píng)論請(qǐng)先 登錄
電視機(jī)通電,遙控器點(diǎn)開機(jī)無反應(yīng),手動(dòng)電視機(jī)按鍵也沒反應(yīng),請(qǐng)教大神指點(diǎn)?
霍爾元件DH481在電視遙控器中的應(yīng)用
四頻拷貝遙控器走俏海外

技術(shù)再進(jìn)化——工業(yè)遙控器技術(shù)要求更高
數(shù)字遙控器

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

遙控器解碼器怎么使用
藍(lán)牙語音遙控器方案

評(píng)論