2017-08-09 42 views
0

我正在運行Elegoo課程,並已成功完成數字鍵盤和IR遠程課程。課程代碼和PDF在http://www.elegoo.com/tutorial/Elegoo%20The%20Most%20Complete%20Starter%20Kit%20for%20UNO%20V1.0.17.8.3.zip,以防有人想看。如何調試庫衝突?

我現在試圖創建我自己的項目,它使用兩個 IR和鍵盤輸入。我已經合併了代碼,調整了引腳號,包含了兩個庫(Keypad和IRemote),代碼基本上可以工作。具體來說,鍵盤工作正常,紅外遙控器做了一些事情。所以我知道接線正常,輸入設備都能正常工作。

我遇到的問題是,任何按下IR遙控器上的按鍵都會顯示爲REPEAT而不是解碼鍵值。如果我將小鍵盤代碼註釋掉,則紅外遙控器可以正常工作。所以,鍵盤庫似乎與IRemote庫有某些衝突。

我不問任何人爲我調試庫(但如果你想 - 不要讓我阻止你)。相反,我正在尋找可能出現的各種衝突的指針,所以我可以自己做一些調試。

我的循環代碼是:

void loop() { 
    char key = keypad.getKey(); // IF I COMMENT OUT THIS LINE, IR WORKS OK 
    // do something with key 
    if (irrecv.decode(&results)) { 
    // have we received an IR signal? 
    translateIR(); 
    irrecv.resume(); // receive the next value 
    } 
} 

void translateIR() { 
    // takes action based on IR code received 
    // describing Remote IR codes 
    switch(results.value) { 
    case 0xFFA25D: Serial.println("POWER"); break; 
    case 0xFFE21D: Serial.println("FUNC/STOP"); break; 
    case 0xFF629D: Serial.println("VOL+"); break; 
    case 0xFF22DD: Serial.println("FAST BACK"); break; 
    case 0xFF02FD: Serial.println("PAUSE"); break; 
    case 0xFFC23D: Serial.println("FAST FORWARD"); break; 
    case 0xFFE01F: Serial.println("DOWN"); break; 
    case 0xFFA857: Serial.println("VOL-"); break; 
    case 0xFF906F: Serial.println("UP"); break; 
    case 0xFF9867: Serial.println("EQ"); break; 
    case 0xFFB04F: Serial.println("ST/REPT"); break; 
    case 0xFF6897: Serial.println("0"); break; 
    case 0xFF30CF: Serial.println("1"); break; 
    case 0xFF18E7: Serial.println("2"); break; 
    case 0xFF7A85: Serial.println("3"); break; 
    case 0xFF10EF: Serial.println("4"); break; 
    case 0xFF38C7: Serial.println("5"); break; 
    case 0xFF5AA5: Serial.println("6"); break; 
    case 0xFF42BD: Serial.println("7"); break; 
    case 0xFF4AB5: Serial.println("8"); break; 
    case 0xFF52AD: Serial.println("9"); break; 
    case 0xFFFFFFFF: Serial.println(" REPEAT");break; 
    default: 
     Serial.println(" other button "); 
    }// End Case 
    delay(500); // Do not get immediate repeat 
} //END translateIR 
+1

我也註釋掉線以下引用鍵。我想說的是,它是造成損壞的keypad.getKey()。我會簡化片段以使其更清晰 – pinoyyid

+0

您怎麼知道IR在做什麼?代碼中甚至沒有看到你收到的代碼。還是有更多這個代碼,你沒有發佈?發佈一切,如果你想幫助搞清楚什麼是錯的。 –

+0

translateIR()顯示收到的代碼。我現在已經把它粘貼到問題 – pinoyyid

回答