|
本帖最后由 Be1ieve 于 2013-8-9 21:40 编辑
開始還是要推薦blueleafxp這篇:http://www.geek-workshop.com/thread-5146-1-1.html
還有瘦網蟲這篇:http://www.geek-workshop.com/thread-5095-1-1.html
沒有上面那兩篇大概我也解不出來,雖然最後還是買邏輯分析儀來解最快
房間空調用的是YAD0F,用IRremote解至少長度要開到280,加上定時長度要420
下面是控制代碼: - /*
- * 格力頭: 9000 高 4400 低
- */
- void sendGreeHeader(){
- irsend.mark(9000);
- irsend.space(4400);
- }
- /*
- * 格力編碼:650高 1600或550低
- * 編碼中斷超過10000會出問題?先以迴圈解
- */
- void sendGreeMark(int time){
- irsend.mark(650);
- while(time > 10000){
- irsend.space(10000);
- time -= 10000;
- }
- irsend.space(time);
- }
- /*
- * 送整組編碼,單BIT壓縮
- */
- void sendGreeBits(byte* irCode, int length){
-
- for(int i=0 ; length > 0 ; i++){ // Has unsent codes
- byte bitMask = 0x80; // Highest bit of a Byte
- int bitLength = (length >= 8)? 8:(length % 8);
- for(int j=0 ; j < bitLength ; j++){
- if(irCode[i] & bitMask) sendGreeMark(1600); // Signal high
- else sendGreeMark(550); // Signal low
- bitMask >>= 1; // Shift right
- }
- length -= 8;
- }
- }
- /*
- * 格力編碼組:頭+35碼+中斷+32碼+中斷
- */
- void sendShortGreeCode(byte *code){
- sendGreeHeader();
- sendGreeBits(&code[0],35); // 35 bits in 5 bytes
- sendGreeMark(20000);
- sendGreeBits(&code[5],32); // 32 bits in 4 bytes
- sendGreeMark(40000);
- }
- /*
- * 長編碼:兩段短編碼組成
- */
- void sendLongGreeCode(byte *code){
- sendShortGreeCode(&code[0]);
- sendShortGreeCode(&code[9]);
- }
复制代码
附件是用分析儀解碼的方式最後再用byte方式存起來就變成下面這樣:
0x90, 0x50, 0x04, 0x0A, 0x40,
0x00, 0x44, 0x00, 0x0F,
0x90, 0x50, 0x04, 0x0E, 0x40,
0x00, 0x00, 0x00, 0x0B, |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|