Hallo,
ich möchte eine IR-Kommunikation zwischen zwei Arduino Boards erzeugen und verwende die Lib vom ken shirriff Blog.
Wenn ich nun zwei kleine Testprogramme auf die Boards lade (eins für Send und eines für Receive) funktioniert das Ganze problemlos (Auch in beide Richtungen).
Verwende gerade den Sony Code.
Jetzt aber zum eigentlichen Problem, das mir etwas Kopfzerbrechen bereitet und ich hoffe ihr könnt mir weiterhelfen:
Nachdem ich nun mit dem einen Board gesendet habe "irsend.sendSony(0x0FF,12)" , kann es daraufhin keinerlei Werte mehr empfangen und geht nicht mehr in die "if (irrecv.decode(&results))" Schleife rein. Wenn ich vorher nichts sende funktioniert aber alles.
Kann es sein, dass die Send-Funktion die Receive-Funktion in irgendeiner Art und Weise blockiert? Oder hat jemand schon einmal von diesem Problem gehört? Im Netz habe ich ein paar Posts zu der Frage gefunden, jedoch nie eine Antwort darauf.
Das andere Board sendet per sendSony den 0x0FE
Hier dann noch mein Code:
#include <IRremote.h>
/*---------------------*/
/* Uno Algorithmus */
/*---------------------*/
// 0x0FF = START
// 0x0FE = START ACCEPTED
// 0x0FD = END
/* PINs */
int RECV_PIN = 11; // receive
int taster_PIN = 7; // Start Taster
/* Variables */
IRrecv irrecv(RECV_PIN);
decode_results results;
IRsend irsend;
int message = 0;
boolean startAccepted = false; // warte auf Accept vom anderen Board
void setup() {
Serial.begin(9600);
pinMode(taster_PIN, INPUT);
irrecv.enableIRIn();
}
void loop() {
digitalWrite(taster_PIN, LOW); // taster auf aus
/* PRESS TASTER */
if (digitalRead(taster_PIN) == HIGH) { // start wenn taster gedrückt
Serial.println("Taster pressed");
/* SEND START */
for (int i = 0; i < 3; i++) {
irsend.sendSony(0x0FF, 12);
Serial.println("---Send: START---");
delay(100);
}
/* RECEIVE START ACCEPTED */
while(1) {
Serial.println("1"); // hier gehts noch
if (irrecv.decode(&results)) {
Serial.println("2"); // hier geht er nicht mehr rein..
message = (results.value);
Serial.print(message);
Serial.print(": ");
if (message==0x0FE) {
Serial.println("---Received: START ACCEPTED---");
irrecv.resume();
startAccepted = true;
break;
}
irrecv.resume();
} // if
} // while
/* start Measuring */
if (startAccepted == true) {
Serial.println("Passt");
}
} // taster
} // loop()
Ich hoffe ihr könnt mir weiterhelfen... Vielen Dank!
Grüße Auron88