/*
Titel: Led dimmen/ Übung für Test
Author: Gregor Mausser
Date: 14.1.2026
*/
const int LedPin = 3;
const int ButtonPin = 5;
int mode = 0;
//gegen Tastenprellen (mit millis)
bool lastReading = HIGH;
bool stableState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 30;
void dimUp(int maxValue) {
for (int i = 0; i <= maxValue; i++ ){
analogWrite(LedPin, i);
Serial.println(i);
}
}
void dimDown(int maxValue, int minValue) {
for (int i = maxValue; i >= minValue; i-- ){
analogWrite(LedPin, i);
Serial.println(i);
}
}
void setup() {
Serial.begin(9600);
pinMode(LedPin, OUTPUT);
pinMode(ButtonPin, INPUT_PULLUP);
}
void loop() {
bool reading = digitalRead(ButtonPin);
if (reading != lastReading) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != stableState) {
stableState = reading;
if (stableState == LOW) {
mode++;
switch (mode) {
//Dimmen von 0% - 100%
case 1:
dimUp(255);
break;
//Dimmen von 100% - 50%
case 2:
dimDown(255, 127);
break;
//Dimmen von 50% - 0%
case 3:
dimDown(127, 0);
break;
//Led ausschalten
default:
analogWrite(LedPin, 0);
Serial.println("Led ist OFF");
mode = 0;
break;
}
}
}
lastReading = reading;
}
}