const int tasterPin = 2; // Taster an Pin 2
const int potPin = A0; // Potenziometer an A0
const int redPin = 11; // Rote LED an Pin 9
const int greenPin = 10; // Grüne LED an Pin 10
const int bluePin = 9; // Blaue LED an Pin 11
int tasterStatus = 0; // Variable für den Tasterstatus
int lastTasterStatus = 0; // Variable für den letzten Tasterstatus
int mode = 0; // Variable für den aktuellen Modus
int redValue = 0; // Variable für die rote Farbe
int greenValue = 0; // Variable für die grüne Farbe
int blueValue = 0; // Variable für die blaue Farbe
void setup() {
pinMode(tasterPin, INPUT_PULLUP); // Taster-Pin als Eingang mit internem Pull-Up Widerstand setzen
pinMode(redPin, OUTPUT); // Rote LED-Pin als Ausgang setzen
pinMode(greenPin, OUTPUT); // Grüne LED-Pin als Ausgang setzen
pinMode(bluePin, OUTPUT); // Blaue LED-Pin als Ausgang setzen
Serial.begin(9600); // Serielle Kommunikation starten
}
void loop() {
tasterStatus = digitalRead(tasterPin); // Tasterstatus lesen
if (tasterStatus == LOW && lastTasterStatus == HIGH) { // Taster gedrückt
mode = (mode + 1) % 4; // Modus ändern: 0=Rot, 1=Grün, 2=Blau, 3=Alle Farben
if (mode < 3) {
blinkLED(); // LED blinkt zur Anzeige des Modus
} else {
showAllColors(); // Alle Farben leuchten
}
}
lastTasterStatus = tasterStatus; // Letzten Tasterstatus aktualisieren
int potValue = analogRead(potPin); // Potenziometerwert lesen
int brightness = map(potValue, 0, 1023, 0, 255); // Wert auf 0-255 skalieren
if (mode == 0) {
redValue = brightness;
analogWrite(redPin, redValue);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
} else if (mode == 1) {
greenValue = brightness;
analogWrite(redPin, 0);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, 0);
} else if (mode == 2) {
blueValue = brightness;
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, blueValue);
} else if (mode == 3) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}
delay(100); // Kurze Pause, um die Serielle Ausgabe lesbar zu machen
}
void blinkLED() {
int blinkPin;
switch (mode) {
case 0:
blinkPin = redPin;
break;
case 1:
blinkPin = greenPin;
break;
case 2:
blinkPin = bluePin;
break;
}
for (int i = 0; i < 4; i++) {
analogWrite(blinkPin, 255); // LED einschalten
delay(250); // 250 ms warten
analogWrite(blinkPin, 0); // LED ausschalten
delay(250); // 250 ms warten
}
}
void showAllColors() {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
delay(1000); // 1 Sekunde warten, um alle Farben anzuzeigen
}