Fehler bei Arduino-Programm (Arduino Uno)?
Mein Programm sollte eigentlich so funktionieren, dass beim drücken der einen Taste auf einer Fernbedienung der motorPin auf high gesetzt wird und der Motor sich eben dreht und bei einer anderen Taste der wieder aufhört. Die Tasten erkannt und sonst funktioniert auch alles, bis ich die Taste zum Einschalten vom Pin drücke. Der Pin schaltet sich auch an, aber danach wird im Serial Monitor nur noch
IR code:0x0
other button
angezeigt, ohne, dass überhaupt irgendwas gedrückt wird und der Pin lässt sich auch nicht mehr ausschalten. Wie fixe ich das?
das ist der Code:
#include "IRremote.h"
int receiver = 11;
int motorPin = 6;
IRrecv irrecv(receiver);
uint32_t last_decodedRawData = 0;
void translateIR()
{
if (irrecv.decodedIRData.flags)
{
irrecv.decodedIRData.decodedRawData = last_decodedRawData;
Serial.println("REPEAT!");
} else
{
Serial.print("IR code:0x");
Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
}
switch (irrecv.decodedIRData.decodedRawData)
{
case 0xF807FF00: digitalWrite(6, HIGH); break;
case 0xF609FF00: digitalWrite(6, LOW); break;
default:
Serial.println(" other button ");
}
last_decodedRawData = irrecv.decodedIRData.decodedRawData;
delay(500);
}
void setup()
{
Serial.begin(9600);
Serial.println("IR Receiver Button Decode");
irrecv.enableIRIn();
pinMode(6, OUTPUT);
}
void loop()
{
if (irrecv.decode())
{
translateIR();
irrecv.resume();
}
}
1 Antwort
case 0xF807FF00: digitalWrite(6, HIGH); break;
case 0xF609FF00: digitalWrite(6, LOW); break;
Hast du mal geschaut, was bei den Tasten die du drückst, was die Bibliothek an Wert auswirft.
Mach mal bei default:
Serial.print("other button ");
Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
Ich denke die Taste liefert einen anderen Wert, als du denkst.
Ich habe deine Code gerade mal gestetet. Uno R3 und er läuft. Mangels Motor habe ich eine LED genommen. Als Fernbedienung die vom TV und nur die Werte angepasst.
ja, mit einer LED funktioniert es bei mir auch konstant. Mit einem Motor funktioniert es jetzt manchmal. ich hab aber keine Ahnung warum es jetzt auf einmal mit dem Motor geht, aber auch nur manchmal. Ich hab seitdem nichts geändert...
hab in die Schaltung einen Transistor eingebaut, jetzt funktioniert es warum auch immer...
ja, hab ich auch gedacht, aber die Tasten werden richtig erkannt.
das hier wird nicht angezeigt, wenn ich die taste drücke, sondern durchgängig bzw automatisch ohne dass ich was mache immer wieder