Probleme mit Programmierung

Die Codetags solltest Du nochmal korrigieren.

Gruß Tommy

code
#include <IRremote.h>
const int RECV_PIN = 3;
const int Sir = 2;
const int LV = 4;
const int LO = 5;
const int LR = 6;
const int BL = 7;
const int BR = 8;
const int BLL = 9;
const int BLR = 10;
const int BLRX = 11;
int i;
uint8_t BLX;
uint8_t BRX;
uint8_t WB;
uint8_t BLLX;
IRrecv irrecv(RECV_PIN);
decode_results results;

// Variablen deklarieren in denen die Startzeiten
// der einzelnen Zeitfunktionen gespeichert werden
unsigned long startzeit_1 = 0;
unsigned long startzeit_2 = 0;
unsigned long startzeit_3 = 0;

// Definitionen der einzelnen Schaltzeiten
#define laufzeit_1 400UL
#define laufzeit_2 200UL
#define laufzeit_3 50UL

void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode (Sir, OUTPUT);
pinMode (LV, OUTPUT);
pinMode (LO, OUTPUT);
pinMode (LR, OUTPUT);
pinMode (BL, OUTPUT);
pinMode (BR, OUTPUT);
pinMode (BLL, OUTPUT);
pinMode (BLR, OUTPUT);
pinMode (BLRX, OUTPUT);
}

void loop() {

if (irrecv.decode(&results)) { //Wenn Daten empfangen wurden,
Serial.println(results.value, DEC); //werden sie als Dezimalzahl (DEC) an den Serial-Monitor ausgegeben.
irrecv.resume();
if (results.value == 16718055) { //Licht vorne
digitalWrite (LV, HIGH);
digitalWrite (LR, HIGH);
}
else if (results.value == 16730805) {
digitalWrite (LV, LOW);
digitalWrite (LR, LOW);
}
else if (results.value == 16754775) { //Licht Oben
digitalWrite (LO, HIGH);
}
else if (results.value == 16750695) {
digitalWrite (LO, LOW);
}
else if (results.value == 16753245) { //Blinker Links
Serial.println(F("D59 Blinker Links ein"));
BLX = HIGH;
BRX = LOW;
WB = LOW;
}
else if (results.value == 16720605) {
Serial.println(F("D63 Blinker Links aus"));
digitalWrite (BL, LOW);
BLX = LOW;
}
else if (results.value == 16769565){ //Blinker Rechts
Serial.println(F("D59 Blinker Rechts ein"));
BRX = HIGH;
BLX = LOW;
WB = LOW;
}
else if (results.value == 16761405){
Serial.println(F("D63 Blinker Rechts aus"));
digitalWrite (BR, LOW);
BRX = LOW;
}

else if (results.value == 16736925){ //Warnblinker
Serial.println(F("D59 Warnblinker ein"));
WB = HIGH;
BRX = LOW;
BLX = LOW;
}
else if (results.value == 16712445){
Serial.println(F("D63 Warnblinker aus"));
digitalWrite (BR, LOW);
digitalWrite (BL, LOW);
WB = LOW;
}

else if (results.value == 16769055){ //Blaulicht
Serial.println(F("D59 Blaulicht ein"));
BLLX = HIGH;
}
else if (results.value == 16738455){
Serial.println(F("D63 Blaulicht aus"));
digitalWrite (BLR, LOW);
digitalWrite (BLL, LOW);
BLLX = LOW;
digitalWrite (BLRX, LOW);
}
else if ((results.value == 16748655)&& (BLLX == HIGH)){
digitalWrite (Sir, HIGH);
delay(200);
digitalWrite (Sir, LOW);
}
else if (results.value == 16726215){
digitalWrite(LV, LOW);
digitalWrite(LR, LOW);
digitalWrite(LO, LOW);
digitalWrite(BL, LOW);
digitalWrite(BR, LOW);
digitalWrite(BLL, LOW);
digitalWrite(BLR, LOW);
digitalWrite(BLRX, LOW);
BLX = LOW;
BRX = LOW;
WB = LOW;
BLLX = LOW;
}
}
if ((millis() - startzeit_1 >= laufzeit_1) && (BLX == HIGH)) { //Blinker Links
startzeit_1 = millis();
digitalWrite(BL, digitalRead(BL) ^ 1);
digitalWrite(BR, LOW);
Serial.print(F("LED ist ")); Serial.println(digitalRead(BL));
}
else if ((millis() - startzeit_1 >= laufzeit_1) && (BRX == HIGH)) { //Blinker Rachts
startzeit_1 = millis();
digitalWrite(BR, digitalRead(BR) ^ 1);
digitalWrite(BL, LOW);
Serial.print(F("LED ist ")); Serial.println(digitalRead(BR));
}
else if ((millis() - startzeit_1 >= laufzeit_1) && (WB == HIGH)) { //Warnblinker
startzeit_1 = millis();
digitalWrite(BL, digitalRead(BL) ^ 1);
digitalWrite(BR, digitalRead(BR) ^ 1);
Serial.print(F("LED ist ")); Serial.println(digitalRead(BL));
}
if ((millis() - startzeit_2 >= laufzeit_2) && (BLLX == HIGH)){ //Blaulicht
startzeit_2 = millis();
digitalWrite(BLRX, digitalRead(BLRX) ^ 1);
Serial.print(F("BLRX ist ")); Serial.println(digitalRead(BLRX));
}
if ((millis() - startzeit_3 >= laufzeit_3) && (BLLX == HIGH) && (digitalRead(BLRX)==HIGH)){ //Blaulicht Links
startzeit_3 = millis();
digitalWrite(BLL, digitalRead(BLL) ^ 1);
digitalWrite(BLR, LOW);
Serial.print(F("BLL ist ")); Serial.println(digitalRead(BLL));
}
if ((millis() - startzeit_3 >= laufzeit_3) && (BLLX == HIGH) && (digitalRead(BLRX)==LOW)){ //Blaulicht Rachts
startzeit_3 = millis();
digitalWrite(BLR, digitalRead(BLR) ^ 1);
digitalWrite(BLL, LOW);
Serial.print(F("BLR ist ")); Serial.println(digitalRead(BLR));
}
}
/code

das ist der Code, ein Video oder Bilder kann ich morgen oder so nochmal schicken. Hab gerade keine Zeit mehr leider.

Das mit dem verstehenden Lesen eines einfachen Textes solltest Du noch üben.

Gruß Tommy

eins noch

@

Serial.println(F("D59 Blinker Links ein"));
..
Serial.println(F("D59 Blinker Rechts ein"));

ich schreibe meist Debug-Meldungen mit der Zeilennummer hin, daher
D59 Blinker Links ein

Damit man es rascher im Code findet. Suche nach "D59" tippe ich schneller ein als ein copy/paste von "Blinker Links ein" auch wenns vieleicht mal nach Codeänderungen nicht mehr exakt an der Stelle steht.
Mit Coderweiterungen verschiebt sich das, egal, sagen wir halt das ist eine "ID"

Kann man so machen, muss man aber nicht. Idee hast jetzt verstanden.

Nur wenn auf Zeile 59 die Meldung Blinker Links ein steht, dann kann auf D59 nicht "Blinker Rechts ein" stehen

hier hättest bei Copy-Paste aufpassen können und eine bessere "ID" (sprich andere Zeilennummer) vergeben

nur wenn ca in der Zeile D

Achso, ich wusste nicht, was das D59 oder ähnliches bedeutet, deshalb hatte ich es nur kopiert. Aber das ist eine gute Idee sich das so anzupassen. Werde ich noch ändern