IR-Led über Serial Steuern

Ich möchte für Home-Automation eine IR-Led benutzen. Die Hex-Codes für die Aktionen der Fernbedienung hab ich schon. Ich möchte nun im Serial Monitor z.B. "red" eingeben und dann sollen meine IR-RGB-Strips auf Rot wechseln. Ich bin jedoch relativ unerfahren was Serial.read angeht, hab aber mal ein Programm geschrieben:

#include <IRremote.h>
IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  int serial = Serial.read();
  if (serial == 1110010) {
    for (int i = 0; i < 3; i++) {
      irsend.sendNEC(0xF720DF, 32); // Sony TV power code
      delay(100);
    }
  } else if (serial == 1100111) {
    for (int i = 0; i < 3; i++) {
      irsend.sendNEC(0xF7A05F, 32); // Sony TV power code
      delay(100);
    }
  } else if (serial == 1100010) {
    for (int i = 0; i < 3; i++) {
      irsend.sendNEC(0xF7609F, 32); // Sony TV power code
      delay(100);
    }
  }
}

Jedoch funktioniert dieser Code nicht / er ließt nicht das vom Seriellen Monitor ein. Bei den Codes bei den if-Funktionen hab ich auch schon versucht ein "0b" davorzuhängen. (Aktuell sind das die Ascii-Codes für Buchstaben r,g,b)

Hardware-mäßig funzt alles.

(deleted)

Sieh dir einfach mal die Beispiele in der IDE an. Da ist dein Problem auch als Beispiel hinterlegt.

Hallo,
zuerst einmal solltest du mit Serial.available() kontrollieren ob überhaupt eine Eingabe
vorliegt.
Dann : Serial.read() liefert einen char zurück also einen Wert zwischen 0 und 0xFF (255).
Du testest aber auf 110011 (also in der Größenordnung).
Dann speicherst du die Rückgaben von Serial.read in einem int.
Ein int hat aber auch nur einen Wertebereich (auf einem 8 Bit Atmega) von -32768 - 32768 !
Selbst wenn read zurückliefern würde was du willst würde es nicht passen !

Du musst einen String von der seriellen einlesen -> siehe Beispiele.

Ulli

Peter-CAD-HST:
moin

Schalte im IDE die Ausgaben der Compilermeldungen ein.

Diese Meldungen helfen dir weiter.

Gruss Peter

der compiled ohne fehlermeldungen

Du meinst wirklich, dass Serial Dir in 1 Zeichen Zahlen > 1 Million bringt?

if (serial == 1110010)

Gruß Tommy

Du meinst sicher
if (serial == 'r')

Man könnte auch B1110010 ( oder etwas leichter lesbar 0x72) schreiben, aber du meinst doch eigentlich das 'r'. 1110010 ist für den Compiler nunmal eine Dezimalzahl