... int main(void) // Hauptprogramm { DDRB |= ((1<= OBER_BEREICH) && ((LedAkt==1) || (LedAkt==2))) Status=1; // LED_high...Oberer Bereich if ((MitWert >= OBER_BEREICH) && (LedAkt==3)) Status=2; // LED_high, von LED_low kommend if ((MitWert < OBER_BEREICH) && (MitWert > UNTER_BEREICH)) Status=3; // LED_mid...Mittlerer Bereich if ((MitWert <= UNTER_BEREICH) && (LedAkt==1)) Status=4; // LED_low, von LED_high kommend if ((MitWert <= UNTER_BEREICH) && ((LedAkt==3) || (LedAkt==2))) Status=5; // LED_low...Unterer Bereich // LedAkt==1 ... "OberBereich" ...Led1 ...Status 1 // && ...logisches UND // LedAkt==2 ... "MittlerBereich"...Led2 ...Status 3 // || ...logisches ODER // LedAkt==3 ... "UnterBereich" ...Led3 ...Status 5 // == ...GLEICH switch(Status) { case 1: // high Led_Ein(1); // LED/high ein, Rest aus LedAkt=1; // "OberBereich" Batt(1); // Batterieausgang ein break; case 2: // LED_high, erst über LED_mid, von LED_low kommend Led_Ein(2); // LED/mid ein, Rest aus WarteMS(500); // Mindest-Wartezeit [ms] Led_Ein(1); // LED/high ein, Rest aus LedAkt=1; // "OberBereich" Batt(1); // Batterieausgang ein break; case 3: // mid Led_Ein(2); // LED/mid ein, Rest aus + Mindest-Wartezeit LedAkt=2; // "MittlerBereich" WarteMS(500); // Mindest-Wartezeit [ms] break; case 4: // LED_low, erst über LED_mid, von LED_high kommend Led_Ein(2); // LED/mid ein, Rest aus WarteMS(500); // Mindest-Wartezeit [ms] Led_Ein(3); // LED/low ein, Rest aus LedAkt=3; // "UnterBereich" Batt(0); // Batterieausgang aus break; case 5: // low Led_Ein(3); // LED/low ein, Rest aus LedAkt=3; // "UnterBereich" Batt(0); // Batterieausgang aus break; } WarteMS(100); // [mSek], Wartezeit bis nächste Messwertauswertung } }