Hallöchen Arduinofans,
folgende Thematik , ich habe circa 5 verschiedene Eingangssignale (alles boolsche Werte), und ca. 5 Ausgangswerte(ebenfalls boolsche Werte). Momentan werden alle Signale in If-Schleifen ausgewertet. Das bedeutet das ich ein haufen Bedingungen habe und dann einige Bits gesetzt werden. Ich würde das ganze gern übersichtlicher gestalten, möglicherweiße in einer Art Tabelle. Geht soetwas? Ich hab leider keine Idee wie ich das realisieren kann. Möglichst auch so, dass man mal was verändern kann.
if ( bitRead(Solar_Dach_state, 7) == 1 and bitRead(KFZ_state, 7) == 1 and bitRead(KFZ_state, 6) == 1 and bitRead(Setup_state, 6) == 1 ) // Sonne = 1
{ // D+ = 1
digitalWrite( Trennrelaise, HIGH); // Netz = 1
digitalWrite(CTEK_Umschalter, HIGH); // Bat-Auto-Modus = 1
digitalWrite(CTEK_Schalter, HIGH);
digitalWrite(Solar_Umschalter, LOW); // Freezer_Bat über Solar
digitalWrite(Solar_Schalter, LOW); // Komfort_Bat über Lichtmaschine
}
if ( bitRead(Solar_Dach_state, 7) == 0 and bitRead(KFZ_state, 7) == 1 and bitRead(KFZ_state, 6) == 1 and bitRead(Setup_state, 6) == 1 ) // Sonne = 0
{ // D+ = 1
digitalWrite( Trennrelaise, HIGH); // Netz = 1
digitalWrite(CTEK_Umschalter, HIGH); // Bat-Auto-Modus = 1
digitalWrite(CTEK_Schalter, HIGH);
digitalWrite(Solar_Umschalter, HIGH); // Komfort_Bat über Lichtmaschine, Motor läuft
digitalWrite(Solar_Schalter, HIGH);
}
if ( bitRead(Solar_Dach_state, 7) == 1 and bitRead(KFZ_state, 7) == 0 and bitRead(KFZ_state, 6) == 1 and bitRead(Setup_state, 6) == 1 ) // Sonne = 1
{ // D+ = 0
digitalWrite( Trennrelaise, HIGH); // Netz = 1
digitalWrite(CTEK_Umschalter, HIGH); // Bat-Auto-Modus = 1
digitalWrite(CTEK_Schalter, LOW);
digitalWrite(Solar_Umschalter,LOW); // Komfort_Bat über CTEK
digitalWrite(Solar_Schalter, LOW); // Freezer_Bat über Solar
} /*******************************************************************/
if ( bitRead(Solar_Dach_state, 7) == 0 and bitRead(KFZ_state, 7) == 0 and bitRead(KFZ_state, 6) == 1 and bitRead(Setup_state, 6) == 1 and bitRead(Setup_state, 4) == 0 and bitRead(Solar_TFT1_state, 7) == 0 )
// Sonne = 0
{ // D+ = 0
digitalWrite( Trennrelaise, HIGH); // Netz = 1
digitalWrite(CTEK_Umschalter, HIGH); // Bat-Auto-Modus = 1
digitalWrite(CTEK_Schalter, LOW ); // Solar_Um = 0
digitalWrite(Solar_Umschalter,HIGH); // Doppelmodus = 0, Button Solar Autonom Modus deaktiviert.
digitalWrite(Solar_Schalter, HIGH); // Komfort_Bat wird über CTEK geladen.
} /*******************************************************************/
if ( bitRead(Solar_Dach_state, 7) == 0 and bitRead(KFZ_state, 7) == 0 and bitRead(KFZ_state, 6) == 1 and bitRead(Setup_state, 6) == 1 and bitRead(Setup_state, 4) == 1 and bitRead(Solar_TFT1_state, 7) == 0 )
// Sonne = 0
{ // D+ = 0
digitalWrite( Trennrelaise, HIGH); // Netz = 1
digitalWrite(CTEK_Umschalter, LOW ); // Bat-Auto-Modus = 1
digitalWrite(CTEK_Schalter, LOW ); // Solar_Um = 1
digitalWrite(Solar_Umschalter,HIGH); // Doppelmodus = 0
digitalWrite(Solar_Schalter, HIGH); // Freezer_Bat wird über CTEK geladen.
} /*******************************************************************/
if ( bitRead(Solar_Dach_state, 7) == 0 and bitRead(KFZ_state, 7) == 0 and bitRead(KFZ_state, 6) == 1 and bitRead(Setup_state, 6) == 1 and bitRead(Solar_TFT1_state, 7) == 1 )
// Sonne = 0
{ // D+ = 0
digitalWrite( Trennrelaise, LOW); // Netz = 1
digitalWrite(CTEK_Umschalter, LOW); // Bat-Auto-Modus = 1
digitalWrite(CTEK_Schalter, LOW); // Doppelmodus = 1
digitalWrite(Solar_Umschalter,HIGH);
digitalWrite(Solar_Schalter, HIGH); // Freezer_Bat und KomfortBat wird über CTEK geladen.
}