步驟1:準(zhǔn)備接收信號
您可以在這里獲得一個(gè):http://www.adafruit.com/products/157
它們的價(jià)格為2美元,不包括運(yùn)輸和處理費(fèi)用。
因此,您要按照第一個(gè)方法連接接收器。圖片。
我強(qiáng)烈建議將IR接收器和遙控器放在鞋盒或較暗的物品中(當(dāng)然是同一鞋盒)。這樣可以確保干擾最少,并且代碼更清晰,因此您不必為一項(xiàng)簡單的任務(wù)就對Arduino進(jìn)行12次編程。另外,請確保您不妨礙人們看電視。
并且要下載名為IR_RECORD.PDE的文件并將其打開到Arduino程序中。
我希望使用USB電纜將Arduino插入您已經(jīng)執(zhí)行第2步!
第2步:接收信號
因此您要將程序上傳到您的您已在最后一步中下載了Arduino。
您要正確連接IR接收器。
一切都正確設(shè)置后,Arduino便已打開并連接到計(jì)算機(jī)。單擊Arduino程序中的按鈕(如圖中所圈出的按鈕),打開串行監(jiān)視器。一旦啟動(dòng)并運(yùn)行。您需要找到一個(gè)您想用來控制某物的遙控器。我的意思是:
-查找要控制的遙控器
-將其指向接收器
-按下您想要一次獲得代碼的按鈕
串行監(jiān)視器
-將整個(gè)代碼粘貼到記事本或?qū)懽职逯?進(jìn)行第3步
第3步:解釋信號
您將得到一堆數(shù)字,后跟“ usecs”或“ usec”。
請確保已將所需的信號復(fù)制到了一個(gè)字墊中,以方便參考。像這樣:
500usec,300usec
600usec,1200usec
但是會(huì)有更多的數(shù)字。
現(xiàn)在在程序中,您會(huì)看到很多次: br》
delayMicroseconds();
pulseIR();
您要獲取第一個(gè)數(shù)字并將其放在delayMicroseconds(“ here”)括號中。 value
并且您要從與delayMicroseconds()之一相同的行中獲取第二個(gè)數(shù)字;值并將其放在pulseIR()的括號中;值。
示例:
說要在串行監(jiān)視器上獲取此值:
OFF ON
1660 usec,580 usec
1640 usec,560 usec
要輸入相應(yīng)的值
例如:
delayMicroseconds(1660);
pulseIR(580);
delayMicroseconds(1640);
pulseIR(560);
這太可惡了容易。
一旦獲得所需的代碼,請?jiān)贏rduino程序中打開IR_SEND.pde文件,然后將您從串行監(jiān)視器獲得的值放在括號之間,方法與我向您展示的方法相同。
下一步將顯示我如何使用Comcast遙控器進(jìn)行此操作的示例。
步驟4:發(fā)送信號
現(xiàn)在,一旦有了所需的代碼,并用您要發(fā)送的信號上載了程序,您要做的就是將IR LED掛接到針腳13,然后類似于圖中的示意圖接地。圖片。如果您有Duemilanove Arduino,則不需要電阻,因?yàn)樗哂杏糜?a href="http://www.wenjunhu.com/tags/pi/" target="_blank">PIN 13的內(nèi)置電阻,因此您不必?fù)?dān)心。
這也可以通過ATTINY 8引腳微控制器來實(shí)現(xiàn)尺寸。我有一個(gè),但我不確定如何使用它。
現(xiàn)在,我將向您展示如何執(zhí)行此操作的真實(shí)示例。
再次,這不是我的密碼,我只是復(fù)制并粘貼以便于理解。
所以當(dāng)我按下Comcast遙控器上的頻道向上按鈕時(shí),我得到了這段代碼。如果您有使用小型黑色遙控器的小型黑匣子,則將擁有這種遙控器。它們充當(dāng)只能轉(zhuǎn)換通道的模數(shù)轉(zhuǎn)換器盒。
這是串行監(jiān)視器代碼:
已接收:
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
這是我從原始數(shù)據(jù)中編寫的代碼通過將代碼放入以下代碼即可:
//此草圖將每隔十秒鐘更改一次頻道,以便您可以在看電視的同時(shí)做其他事情
//而不必更改頻道,例如在筆記本電腦和
//眾所周知,按下按鈕是如此困難,所以為什么不使其自動(dòng)化呢?
int IRledPin = 13;//連接到數(shù)字引腳13的LED
//當(dāng)草圖開始時(shí),setup()方法運(yùn)行一次
void setup(){
//將IR數(shù)字引腳初始化為輸出:
pinMode(IRledPin,OUTPUT);
Serial.begin(9600);
}
無效循環(huán)()
{
SendChannelUpCode();
delay(20 * 1000);//等待二十秒(20秒* 1000毫秒),以不同的時(shí)間間隔更改此值。
}
//此過程向IRledPin
//發(fā)送38KHz脈沖一定的微秒數(shù)。每當(dāng)需要發(fā)送代碼時(shí),我們都會(huì)使用此方法。
void pulseIR(long microsecs){
//我們將從等待等待的微秒數(shù)開始倒數(shù)
cli();//關(guān)閉所有后臺(tái)中斷,而(microsecs》 0){
//38 kHz大約高13微秒,而低13微秒
digitalWrite(IRledPin,HIGH);//這大約需要3微秒的時(shí)間
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);//打開時(shí)間(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);
}
責(zé)任編輯:wv
-
電視
+關(guān)注
關(guān)注
15文章
2492瀏覽量
75852 -
Arduino
+關(guān)注
關(guān)注
188文章
6475瀏覽量
187473
發(fā)布評論請先 登錄
相關(guān)推薦
評論