car:ir:ir-befehle-mit-viessmann-carmotion

Dies ist eine alte Version des Dokuments!


IR-Befehle für Viessmann Car-Motion

/*  
    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 <IRremote.hpp>
 
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;
 
}
  • car/ir/ir-befehle-mit-viessmann-carmotion.1778588517.txt.gz
  • Zuletzt geändert: 12.05.2026 14:21
  • von Martin Fitzel