IR - 傳送 IR NEC 原始數據並解碼
材料準備
AmebaD [AMB21 / AMB22 / AMB23 / BW16 ] x 2
Grove – 紅外線發射器 x1 (Figure 1)
Grove – 紅外線接收器 x1 (Figure 2)
範例説明
在此範例中,我們使用兩個Ameba RTL8722模塊,它們分別與紅外線(IR)發射器和IR接收器連接,以發送和接收IR NEC 原始數據。
有關更多詳細信息,請參閱SB-Projects的主題 IR Remote Control Theory 學習IR遙控器操作的理論以及IR協議說明。 在此範例中,我們將使用NEC(Now Renesas,也稱為日語格式)作為傳輸協議。」
8位元地址和8位元命令長度。
具擴展模式,地址長度加倍。
為了確保可靠性,發送兩次地址和命令。
調節脈衝距離。
載波頻率為38kHz。
Bit Time為1.125ms或2.25ms。
由於總共將傳輸32位元數據包含標頭和結束位元 (圖五)。如果我們在時間範圍內拆開數據,將有(2 + 32)x 2 +1 = 69個要傳輸的 “ marks ” / “ spaces ”(圖六),形成原始NEC數據在Arduino “ *.ino ” 文件中進行傳輸。關於如何獲得原始數據代碼的細節, 可以參考 Ken Shirriff’s 的 博客
圖七和圖八顯示了AMB21 / AMB22板的紅外發射器和接收器的引腳配置。
圖九和圖十顯示了BW16板的紅外發射器和接收器的引腳配置。
正確設置連接後,我們將介紹此範例的編碼部分。 首先,確保在Arduino IDE中選擇了正確的Ameba開發板:“Tools”->“Board”。
在“File”->“Examples”->“ AmebaIRDevice”->“ IRSendRAW”中打開“ IRSendRAW”範例(圖十一),並將其上傳到與IR Emitter連接的第一塊板上:
成功上傳IRSendRaw的範例代碼後,您可能需要從“File”->“Examples”->“ AmebaIRDevice”->“ IRRecvNEC”上傳與IR接收器連接的第二塊板的IRRecvNEC範例。
打開IR接收器的serial monitor並按兩塊開發板上的重置按鈕後,將每3秒接收一次數據“ 48”(由於具有delays()函式,因此不必強制等待)。解碼來自接收引腳D8的信號並使用邏輯分析儀和脈衝視圖發送引腳D9(圖十二)後,使用IR NEC協議解碼接收數據後,結果也顯示為“ 48”。
程式碼説明











