2017-08-09 4 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とキーパッド入力の両方を使用する私自身のプロジェクトを作成しようとしています。私はコードをマージし、ピン番号を調整し、両方のライブラリ(キーパッドとIRemote)を含み、コードは基本的に動作します。特に、キーパッドは正しく機能し、IRリモートは何かをします。だから私は配線がOKであり、入力デバイスが両方とも動作していることを知っています。

私の問題は、IRリモートのいずれかのキーがデコードされたキー値ではなくREPEATであることです。キーパッドコードをコメントアウトすると、IRリモートが正しく機能します。したがって、Keypadライブラリは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

を打ってるように見えます。私が言っていることは、それが破損の原因となっているキーパッド.getKey()であるということです。スニペットを簡略化してより明確にする – pinoyyid

+0

IRが何をしているのか、どのように知っていますか?そのコードの中には、あなたが受け取ったコードも見えます。それとも、このコードにあなたが投稿しなかったことは何ですか?あなたが何が間違っているかを理解するのを助けたいなら、それをすべて投稿してください。 –

+0

translateIR()は受信したコードを表示します。私は今質問にそれを貼り付けた – pinoyyid

答えて

関連する問題