====== IR-Befehle für Viessmann Car-Motion ====== ===== IR Code ===== /* Am 20.04.24 mit Hardi angepasst. Rückwärtsfahren solange wie Taster gedrückt. Von Odracir Repahcs am 01.04.2024 auf Facebook gepostet https://www.facebook.com/groups/800631387836720/permalink/1070476617518861/ Ich habe die Signale der Fernbedienung ausgelesen Das "Rückwärtsfahrsignal" in der Wiederholrate enorm erhöht (900). Bibliothek "IRremote" installieren Pin 5 am Mega verwendet Wunschliste: - Feedback LED fürs Rückwärtsfahren - Taster der das Rückwärtsfahren auslöst - Sound "Sicherheitspiepsen" beim Rückwärtsfahren: https://www.videvo.net/de/lizenzfreie-soundeffekte/lkw-ruckwarts-piepton/705171/ */ #include const int SenderPin = 5; //Pin für IR-Diode const byte buttonDriveBackwards = 8 ; //Taster "Anhalten und Rückwärts" const byte buttonWarnblinker = 9 ; //Taster "Warnblinker" const byte buttonLosfahren = 4 ; //Taster "+" const byte buttonAbbremsen = 3 ; //Taster "-" const byte ledDriveBackwardsPin = A4; //LED Feedback "Anhalten und Rückwärts" byte buttonStatusDriveBackwards = 0 ; byte buttonStatusWarnblinker = 0 ; byte buttonStatusLosfahren = 0 ; byte buttonStatusAbbremsen = 0 ; uint8_t Repeats = 0; bool Old_DriveBackwards = true; // Vorheriger Status des Tasters (nicht gedrückt = HIGH, gedrückt = LOW) uint32_t StartTimer; uint32_t rawData01 = 0xBA45FF00; //Fahrzeug aus uint32_t rawData02 = 0xBF40FF00; //Beschleunigen, (+) uint32_t rawData03 = 0xBC43FF00; //Anhalten und Rückwärts uint32_t rawData04 = 0xF807FF00; //Blinken links uint32_t rawData05 = 0xEA15FF00; //losfahren, (Fahren) uint32_t rawData06 = 0xF609FF00; //Blinken rechts uint32_t rawData07 = 0xE916FF00; //Hauptlichter schalten uint32_t rawData08 = 0xE619FF00; //Abbremsen, (-) uint32_t rawData09 = 0xF20DFF00; //Akkuanzeige uint32_t rawData10 = 0xF30CFF00; //Fernlicht uint32_t rawData11 = 0xE718FF00; //Rundumlicht uint32_t rawData12 = 0xA15EFF00; //Warnblinker uint32_t rawData13 = 0xF708FF00; //Taste 4 uint32_t rawData14 = 0xE31CFF00; //Taste 5 uint32_t rawData15 = 0xA55AFF00; //Taste 6 uint32_t rawData16 = 0xBD42FF00; //Taste 7 uint32_t rawData17 = 0xAD52FF00; //Taste 8 uint32_t rawData18 = 0xB54AFF00; //Taste 9 uint32_t rawData19 = 0xBB44FF00; //Taste Test uint32_t rawData20 = 0xB847FF00; //Taste MENU void setup() { Serial.begin(115200); pinMode(SenderPin, OUTPUT); pinMode(ledDriveBackwardsPin, OUTPUT); IrSender.begin(SenderPin,DISABLE_LED_FEEDBACK,0); pinMode(buttonDriveBackwards, INPUT_PULLUP); pinMode(buttonWarnblinker, INPUT_PULLUP); pinMode(buttonAbbremsen, INPUT_PULLUP); pinMode(buttonLosfahren, INPUT_PULLUP); } void loop() { // Status der Taster einlesen buttonStatusDriveBackwards = digitalRead(buttonDriveBackwards); buttonStatusWarnblinker = digitalRead(buttonWarnblinker); buttonStatusAbbremsen = digitalRead(buttonAbbremsen); buttonStatusLosfahren = digitalRead(buttonLosfahren); // Verhalten des Tasters: // // ---------------, ,--------------- // | | // '------------' // Nicht gedrückt Gehalten Losgelassen // ^ ^ // if (Old_DriveBackwards == HIGH && buttonStatusDriveBackwards == LOW) // Taster wird gedrückt { // Serial.println("Taster gedrückt"); IrSender.sendNECRaw(rawData03, 0); //Anhalten und Rückwärts StartTimer = millis(); } else if (Old_DriveBackwards == LOW && buttonStatusDriveBackwards == HIGH) // Taster wird losgelassen { digitalWrite(ledDriveBackwardsPin, LOW); // Serial.println("Taster losgelassen"); } else if (buttonStatusDriveBackwards == LOW) // Wenn Taster gehalten wird { if (millis() - StartTimer > 92) { // Serial.println("Taster gehalten"); digitalWrite(ledDriveBackwardsPin, HIGH); // Kontroll-LED: Taster Rückwärtsfahren gehalten IrSender.sendNECRepeat(); StartTimer = millis(); } } if (buttonStatusWarnblinker == LOW) // Wenn Taster gedrueckt... { IrSender.sendNECRaw(rawData12, 0); //Warnblinker } else { } if (buttonStatusAbbremsen == LOW) // Wenn Taster gedrueckt... { IrSender.sendNECRaw(rawData08, 0); //Abbremsen } else { } if (buttonStatusLosfahren == LOW) // Wenn Taster gedrueckt... { IrSender.sendNECRaw(rawData05, 0); //Losfahren } else { } Old_DriveBackwards = buttonStatusDriveBackwards; }