步驟1:準備接收信號
您可以在這里獲得一個:http://www.adafruit.com/products/157
它們的價格為2美元,不包括運輸和處理費用。
因此,您要按照第一個方法連接接收器。圖片。
我強烈建議將IR接收器和遙控器放在鞋盒或較暗的物品中(當然是同一鞋盒)。這樣可以確保干擾最少,并且代碼更清晰,因此您不必為一項簡單的任務就對Arduino進行12次編程。另外,請確保您不妨礙人們看電視。
并且要下載名為IR_RECORD.PDE的文件并將其打開到Arduino程序中。
我希望使用USB電纜將Arduino插入您已經執行第2步!
第2步:接收信號
因此您要將程序上傳到您的您已在最后一步中下載了Arduino。
您要正確連接IR接收器。
一切都正確設置后,Arduino便已打開并連接到計算機。單擊Arduino程序中的按鈕(如圖中所圈出的按鈕),打開串行監視器。一旦啟動并運行。您需要找到一個您想用來控制某物的遙控器。我的意思是:
-查找要控制的遙控器
-將其指向接收器
-按下您想要一次獲得代碼的按鈕
串行監視器
-將整個代碼粘貼到記事本或寫字板中-進行第3步
第3步:解釋信號
您將得到一堆數字,后跟“ usecs”或“ usec”。
請確保已將所需的信號復制到了一個字墊中,以方便參考。像這樣:
500usec,300usec
600usec,1200usec
但是會有更多的數字。
現在在程序中,您會看到很多次: br》
delayMicroseconds();
pulseIR();
您要獲取第一個數字并將其放在delayMicroseconds(“ here”)括號中。 value
并且您要從與delayMicroseconds()之一相同的行中獲取第二個數字;值并將其放在pulseIR()的括號中;值。
示例:
說要在串行監視器上獲取此值:
OFF ON
1660 usec,580 usec
1640 usec,560 usec
要輸入相應的值
例如:
delayMicroseconds(1660);
pulseIR(580);
delayMicroseconds(1640);
pulseIR(560);
這太可惡了容易。
一旦獲得所需的代碼,請在Arduino程序中打開IR_SEND.pde文件,然后將您從串行監視器獲得的值放在括號之間,方法與我向您展示的方法相同。
下一步將顯示我如何使用Comcast遙控器進行此操作的示例。
步驟4:發送信號
現在,一旦有了所需的代碼,并用您要發送的信號上載了程序,您要做的就是將IR LED掛接到針腳13,然后類似于圖中的示意圖接地。圖片。如果您有Duemilanove Arduino,則不需要電阻,因為它具有用于PIN 13的內置電阻,因此您不必擔心。
這也可以通過ATTINY 8引腳微控制器來實現尺寸。我有一個,但我不確定如何使用它。
現在,我將向您展示如何執行此操作的真實示例。
再次,這不是我的密碼,我只是復制并粘貼以便于理解。
所以當我按下Comcast遙控器上的頻道向上按鈕時,我得到了這段代碼。如果您有使用小型黑色遙控器的小型黑匣子,則將擁有這種遙控器。它們充當只能轉換通道的模數轉換器盒。
這是串行監視器代碼:
已接收:
OFF ON 《363》 usec,280 usec
820 usec,300 usec
1580 usec,320 usec
640 usec,240 usec
2740 usec,240 usec 《1280》 1280 usec,240 usec 《12》 usec,240 usec
1120 usec,240 usec
2600usec,240usec
12740usec,240usec
840usec,240usec 《980》 980usec,240usec 《700》 700usec,240usec
700usec,240usec
720 usec,240 usec
2460 usec,260 usec
700 usec,240 usec
700 usec,240 usec
14904 usec,260 usec
820 usec,240 usec
1660 usec ,240 USEC
700 USEC,260 USEC
2740 USEC,240 USEC
1240 USEC,240 USEC
1260 USEC,240 USEC 1100 USEC,240 USEC 《26》 2620,240 USEC usec
12720 usec,260 usec
840 usec,220 usec 《20》 usec,240 usec
1780 usec,260 usec 《700》 c,240 usec
700 usec,240 usec
2480 usec,240 usec
700 usec,240 usec
700 usec,240 usec
這是我從原始數據中編寫的代碼通過將代碼放入以下代碼即可:
//此草圖將每隔十秒鐘更改一次頻道,以便您可以在看電視的同時做其他事情
//而不必更改頻道,例如在筆記本電腦和
//眾所周知,按下按鈕是如此困難,所以為什么不使其自動化呢?
int IRledPin = 13;//連接到數字引腳13的LED
//當草圖開始時,setup()方法運行一次
void setup(){
//將IR數字引腳初始化為輸出:
pinMode(IRledPin,OUTPUT);
Serial.begin(9600);
}
無效循環()
{
SendChannelUpCode();
delay(20 * 1000);//等待二十秒(20秒* 1000毫秒),以不同的時間間隔更改此值。
}
//此過程向IRledPin
//發送38KHz脈沖一定的微秒數。每當需要發送代碼時,我們都會使用此方法。
void pulseIR(long microsecs){
//我們將從等待等待的微秒數開始倒數
cli();//關閉所有后臺中斷,而(microsecs》 0){
//38 kHz大約高13微秒,而低13微秒
digitalWrite(IRledPin,HIGH);//這大約需要3微秒的時間
delayMicroseconds(10);//閑逛10微秒
digitalWrite(IRledPin,LOW);//這也需要大約3微秒
delayMicroseconds(10);//閑逛10微秒
//所以總共26微秒
微秒-= 26;
}
sei();////將它們重新打開
}
void SendChannelUpCode(){
//這是CHANNEL +的代碼,用于電視COMCAST
delayMicroseconds(36328);//Time off(LEFT column)
pulseIR(280);//打開時間(RIGHT列)《-------請勿將這些UP
delayMicroseconds(820);
pulseIR(300);
delayMicroseconds(1580);
pulseIR( 320);
delayMicroseconds(640);
pulseIR(240);
delayMicroseconds(1280);
pulseIR(240);
delayMicroseconds(1240);
pulseIR(240) ;
delayMicroseconds(1120);
pulseIR(240);
delayMicroseconds(2600);
pulseIR(240);
delayMicroseconds(12740);
pulseIR(240);
delayMicroseconds(840);
pulseIR(240);
delayMicroseconds(980);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(720);
pulseIR(240);
delayMicroseconds(2460);
pulseIR(240);
delayMicroseconds( 700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(14904);
pulseIR(240);
delayMicroseconds(820) ;
pulseIR(240);
delayMicroseconds(1600);
pulseIR(240);
delayMicroseconds(700);
pulseIR(260);
delayMicrose conds(2740);
pulseIR(240);
delayMicroseconds(1240);
pulseIR(240);
delayMicroseconds(1260);
pulseIR(240);
delayMicroseconds( 1100);
pulseIR(240);
delayMicroseconds(2620);
pulseIR(240);
delayMicroseconds(12720);
pulseIR(260);
delayMicroseconds(840) ;
pulseIR(220);
delayMicroseconds(2080);
pulseIR(240);
delayMicroseconds(1780);
pulseIR(260);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(2480);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
delayMicroseconds(700);
pulseIR(240);
}
責任編輯:wv
-
電視
+關注
關注
15文章
2502瀏覽量
76246 -
Arduino
+關注
關注
188文章
6478瀏覽量
188287
發布評論請先 登錄
相關推薦
等離子電視與液晶電視的區別
如何使用Arduino實現CAN總線通信呢
HAL庫在Arduino平臺上的使用
基于Arduino的串口通信項目
stm32與Arduino的比較
如何使用Arduino實現CAN總線通信
通過I2C PWM IC控制伺服,可以為伺服控制進行高優先級中斷嗎?
ESP32使用Arduino啟用藍牙后編譯固件過大,怎樣縮減大小呢?
利用Arduino的自動風扇速度控制電路設計

評論