Guten Tag allerseits
Habe einmal mehr versucht, den Fehler zu erruieren. Dazu habe ich ein drittes HC-12 Modul an ein Uno gehängt und auf den Serial Monitor alles geprintet, was von den anderen zwei Unos gesendet wird. Bei jedem Treffer kommt exakt das an, was ankommen soll. Also die PlayerID des Schützen.
Zudem habe ich bei der betreffenden Funktion alles kommentiert. Doch wie kann es sein, dass bei HC12.read so ein Quatsch gelesen wird, wenn doch alles korrekt gesendet wird?
void shoot() {
if(FIRE == 1){ // Has the trigger been pressed?
Serial.println("FIRE 1");
sendPulse(IRtransmitPin, 4); // Transmit Header pulse, send pulse subroutine deals with the details
delayMicroseconds(IRpulse);
for(int i = 0; i < 8; i++) { // Transmit Byte1
if(byte1[i] == 1){
sendPulse(IRtransmitPin, 1);
//Serial.print("1 ");
}
//else{Serial.print("0 ");}
sendPulse(IRtransmitPin, 1);
delayMicroseconds(IRpulse);
}
for(int i = 0; i < 8; i++) { // Transmit Byte2
if(byte2[i] == 1){
sendPulse(IRtransmitPin, 1);
// Serial.print("1 ");
}
//else{Serial.print("0 ");}
sendPulse(IRtransmitPin, 1);
delayMicroseconds(IRpulse);
}
if(myParity == 1){ // Parity
sendPulse(IRtransmitPin, 1);
}
sendPulse(IRtransmitPin, 1);
delayMicroseconds(IRpulse);
Serial.println("");
Serial.println("DONE 1");
myDFPlayer.play(1);
}
if(HC12.available()) { // Data available from HC-12?
HitPlayer = (HC12.read()); // Read data from HC-12
Serial.println("Read Hitplayer from RF");
Serial.println(HitPlayer);
if(HitPlayer == myPlayerID){ //compare transmitted ID from the shooter with own PlayerID
myDFPlayer.play(4); // if true play audio feedback
}
}
FIRE = 0;
ammo = ammo - 1;
}