arduino

[arduino] 紅外線發射

哈 想寫這篇想很久了,可是我莫名的一直遇到bug不知道為什麼鬼打牆一直失敗,後來檢討原因才發現自己一些小地方沒注意到 紅外線編碼也打錯才導致。
目前我已經順利的可以開啟我家兩台奇美電視機了

arduino 紅外線發送
arduino 紅外線發送

照上面這樣接上紅外線發射LED燈 還有一個100毆姆的電阻 然後他的數位接腳一定要接到pin3 你要換腳的話要去修改他的涵式庫,然後在上一篇紅外線接收你應該會知道你的遙控器是哪個decode_type跟你的發送內容

例如我的奇美電視是NEC編碼然後開關電視是807F30CF

所以我就要採用 irsend.sendNEC(0x807F30CF, 32); // TV power code

你的也許不是NEC的 也有可能是其他的

#define NEC 1
#define SONY 2
#define RC5 3
#define RC6 4
#define DISH 5
#define SHARP 6
#define PANASONIC 7
#define JVC 8
#define SANYO 9
#define MITSUBISHI 10
#define UNKNOWN -1

相類似這些 你就要改變你的語法 不能用 irsend.sendNEC 可能要改用sendPanasonic 阿sendJVC阿之類的 看你的編碼 這個一定要選對

然後irsend.sendNEC(0x807F30CF, 32); 這邊有一個數字32是你這個訊號的bits 沒意外都會是32,下圖是上一篇文章
紅外線接收的圖
IR-ARDUINO

把她打入程式碼 燒入就可以拉,下列範例是一次發送三個訊號 但是其實應該發送一次就可以了 然後發送後記得delay一小段時間再發送下一個訊號

程式碼如下

#include <IRremote.h>

IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {

    for (int i = 0; i < 3; i++) {
      irsend.sendNEC(0x807F30CF, 32); // TV power code
      delay(400);
    }

   delay(1400);
}

github:https://github.com/davidou123/arduino/blob/master/IRsendDemo/IRsendDemo.ino

總歸來說 你要是送不出去開不了電視 你很有可能是
1.sendNEC 這個選錯了 你可能不是NEC的編碼
2.你的發送訊號寫錯了0x807F30CF 請換成正確的訊號 你可以在接收測試一次 我就發生過一次編碼錯誤 害我一直開不了電視
3.你電路接錯了,你可以拿相機去看那顆發射LED燈 你應該會看的見一個不可見光的紅光在閃爍 有閃爍才是有發射訊號 沒有代表錯誤
4.大概是這樣吧 換個紅外線發射器試試看XD