const int tasterPin = 2; // Taster an Pin 2
const int potPin = A0; // Potenziometer an A0
const int redPin = 11; // Rote LED an Pin 11
const int greenPin = 10; // Grüne LED an Pin 10
const int bluePin = 9; // Blaue LED an Pin 9
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
Serial.print("Mode: "); Serial.println(mode);
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);
Serial.print("Red Value: "); Serial.println(redValue);
} else if (mode == 1) {
greenValue = brightness;
analogWrite(redPin, 0);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, 0);
Serial.print("Green Value: "); Serial.println(greenValue);
} else if (mode == 2) {
blueValue = brightness;
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, blueValue);
Serial.print("Blue Value: "); Serial.println(blueValue);
} else if (mode == 3) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
Serial.print("Red Value: "); Serial.println(redValue);
Serial.print("Green Value: "); Serial.println(greenValue);
Serial.print("Blue Value: "); Serial.println(blueValue);
}
delay(100); // Kurze Pause, um die Serielle Ausgabe lesbar zu machen
}
void blinkLED() {
int red = 0;
int green = 0;
int blue = 0;
switch (mode) {
case 0:
red = 255;
break;
case 1:
green = 255;
break;
case 2:
blue = 255;
break;
}
for (int i = 0; i < 4; i++) {
colorSet(red, green, blue); // LED einschalten
delay(250); // 250 ms warten
colorSet(0, 0, 0); // LED ausschalten
delay(250); // 250 ms warten
}
}
void colorSet(int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
void showAllColors() {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
delay(5000); // 5 Sekunden warten, um alle Farben anzuzeigen
}