Problem mit Infrarotsensord

//Guten Tag an alle,
ich habe mir von Amazon ein FunduinoSet besorgt und ein dazugehöriges Heft wurde mir mitgeliefert "ARDUINO lernen"(10.Auflage) von Ralf Snieders und bin nun beim Eingeben des Codes für seinen Infrarotsensor auf ein Problem gestoßen.

# include int EmpfaengerPin = 11; void setup() { // put your setup code here, to run once: Serial.begin(9600); IrReceiver.begin(EmpfaengerPin); }

void loop() {
// put your main code here, to run repeatedly:
if(IrReceiver.decode())
{
delay(200);
IrReceiver.resume();
if(IrReceiver.decodedIRData.command > 0 && IrReceiver.decodedIRData.command > 95)
{
Serial.print("Dezimalwert: ");
Serial.print(IrReceiver.decodedIRData.command);
Serial.print(" -> ");
If(IrReceiver.decodedIRData.command == 69) Serial.println("A");
//hier wird ein Fehler ausgegeben, der besagt, dass If nicht definiert ist
If (IrReceiver.decodedIRData.command == 70) Serial.println("Pfeil oben");
If (IrReceiver.decodedIRData.command == 71) Serial.println("B");
If (IrReceiver.decodedIRData.command == 68) Serial.println("Pfeil links");
If (IrReceiver.decodedIRData.command == 64) Serial.println("X");
If (IrReceiver.decodedIRData.command == 67) Serial.println("Pfeil rechts");
If (IrReceiver.decodedIRData.command == 7) Serial.println("0");
If (IrReceiver.decodedIRData.command == 21) Serial.println("Pfeil unten");
If (IrReceiver.decodedIRData.command == 9) Serial.println("C");
If (IrReceiver.decodedIRData.command == 22) Serial.println("1");
If (IrReceiver.decodedIRData.command == 25) Serial.println("2");
If (IrReceiver.decodedIRData.command == 13) Serial.println("3");
If (IrReceiver.decodedIRData.command == 12) Serial.println("4");
If (IrReceiver.decodedIRData.command == 24) Serial.println("5");
If (IrReceiver.decodedIRData.command == 94) Serial.println("6");
If (IrReceiver.decodedIRData.command == 8) Serial.println("7");
If (IrReceiver.decodedIRData.command == 28) Serial.println("8");
If (IrReceiver.decodedIRData.command == 90) Serial.println("9");
}
}
}

Was kann ich tun?

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Am besten "if" mit einem kleinen "i" schreiben.

1 Like

Vielen Dank

Auch

in einer neuen Zeile schreiben weil es ansonsten ein Teil der Kommentierung ist.
Grüße Uwe

1 Like

Ein Switch/Case ist da besser angebracht, als die lange if-Abfrage.

Sicher ist es das. Aber das Programm ist, so ich denn den TO richtig verstanden habe, aus einem Buch abgetippt. Und Buchbeispiele sind (gerade im Arduinobereich), was die Programmierung betrifft, häufig leider nicht besonders "ausgefeilt".

Bei mir und Arduino ist das Erfolgserlebnis größer, wenn der Sketch kleiner ist.

Wenn der Hello-World Blink-Sketch funktioniert hat, probiert man natürlich auch andere Sachen aus.

Aber ich empfehle, nicht gleich einen kompletten Sketch abzutippen, sondern nur die minimal erforderlichen Sachen, um zu erkennen, ob es überhaupt wie erwartet funktioniert.

#include <IrRemote.h>  // vermute ich mal 
IRrecv  IrReceiver;
int EmpfaengerPin = 11; 
void setup() { 
  Serial.begin(9600); 
  IrReceiver.begin(EmpfaengerPin); 
}
void loop() {
   if(IrReceiver.decode()) {
      delay(200);
      IrReceiver.resume();
      Serial.print("Dezimalwert: ");
      Serial.println (IrReceiver.decodedIRData.command);
   }
}

Das ist genug Code, um zu sehen, ob der vorgesehene Sender mit dem an den Arduino angeschlossenen Empfänger zusammenspielt und command tatsächlich Werte zwischen 1 und 90 enthält.

Dem Compiler ist es übrigens einigermaßen egal wie du den Sketch formatierst, aber als Mensch hat man es einfacher, wenn man klarer sieht, was der Compiler draus machen wird.

1 Like

Deswegen ja auch der Tipp, es gleich "besser" zu machen. :wink:

1 Like

gefällt mir.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.