我正在運行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
我也註釋掉線以下引用鍵。我想說的是,它是造成損壞的keypad.getKey()。我會簡化片段以使其更清晰 – pinoyyid
您怎麼知道IR在做什麼?代碼中甚至沒有看到你收到的代碼。還是有更多這個代碼,你沒有發佈?發佈一切,如果你想幫助搞清楚什麼是錯的。 –
translateIR()顯示收到的代碼。我現在已經把它粘貼到問題 – pinoyyid