遙控器是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文章
2634瀏覽量
79182 -
遙控器
+關注
關注
18文章
877瀏覽量
71858 -
Arduino
+關注
關注
190文章
6526瀏覽量
196925
發布評論請先 登錄
基于芯嶺技術XL2417D芯片的2.4G無線遙控器解決方案
【教程】圖文教程:詳解EWD22S-A01TR遙控器配對全步驟
霍爾元件在電視遙控器中的創新應用——推薦迪仕科技全極低功耗DH481
智能語音遙控器低功耗BLE藍牙芯片
力芯微紅外遙控IC芯片ET4008MTC是家用遙控器的智能芯選
藍牙語音遙控器方案 NRF52840、HS6621
HarmonyOSAI編程萬能卡片生成(一)
微光遙控器為低光環境帶來智能與環保新選擇:永銘電容選型方案
藍牙語音遙控器:智能家居的智慧控制核心
用射頻芯片開發的家電遙控器特點介紹
基于Arduino Nano的萬能電視遙控器設計
評論