Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#include <Bounce2.h>
- //#include <LiquidCrystal_I2C.h>
- #include <Wire.h>
- #include <LiquidCrystal.h>
- const int r_led = 13;
- const int g_led = 8;
- const int b_led = 10;
- const int button_pin = 7;
- const int POT=A0;
- int Contrast=20;
- int farbe = 0;
- int oldFarbe = 0;
- boolean buttonPressed = false;
- int helligkeit0; //Rot
- int helligkeit1; //Gruen
- int helligkeit2; //Blau
- int oldHelligkeit0=0;
- int oldHelligkeit1=0;
- int oldHelligkeit2=0;
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
- void setup()
- {
- Serial.begin(9600);
- pinMode(r_led,OUTPUT);
- pinMode(g_led,OUTPUT);
- pinMode(b_led,OUTPUT);
- pinMode(button_pin,INPUT);
- analogWrite(6,Contrast);
- lcd.begin(16, 2);
- //debouncer.attach(button_pin);
- //debouncer.interval(5); // interval in ms
- //lcd.init(); // initialize the lcd
- //lcd.backlight();
- }
- void loop()
- {
- buttonPress(); //Nimmt Signal von Taster und schaltet durch die Farben
- getValue(); //Nimmt Signal von Potentiometer und ordnet den Wert der ausgewählten Farbe zu.
- lightLEDs(); //LEDs leuchten mit ausgewählten Parametern
- sendInfo(); //LCD-Display und Konsole geben Werte visuell aus. RGB-Farbcode; Hexadezimal-Farbcode; Anzeige der ausgewählten Farbe "Sel:<color>"
- }
- void buttonPress()
- {
- if(digitalRead(button_pin) == HIGH && buttonPressed == false)
- {
- buttonPressed = true; //verhindert mehrmaliges ausführen der Funktion während eines Tastendrucks
- farbe++;
- if (farbe > 2)
- {
- farbe = 0;
- }
- String s = String(farbe);
- Serial.println("Farbe "+s);
- }
- else if (digitalRead(button_pin) == LOW)
- {
- buttonPressed = false; //Taste nicht gedrückt, wieder bereit für nächste Eingabe
- }
- }
- void getValue()
- {
- //Potentiometer auslesen und intensität ausgewählter Farbe manipulieren
- if (farbe == 0)
- {
- helligkeit0 = analogRead(POT)/4;
- }
- else if (farbe == 1)
- {
- helligkeit1 = analogRead(POT)/4;
- }
- else
- {
- helligkeit2 = analogRead(POT)/4;
- }
- }
- void lightLEDs()
- {
- //LEDs ansteuern
- analogWrite(r_led,helligkeit0);
- analogWrite(g_led,helligkeit1);
- analogWrite(b_led,helligkeit2);
- }
- void sendInfo()
- {
- //Abfrage ob Werte sich verändert haben, wenn ja wird der Display mit den Werten aktualisiert.
- if(helligkeit0 != oldHelligkeit0 || helligkeit1 != oldHelligkeit1 || helligkeit2 != oldHelligkeit2 || farbe != oldFarbe)
- {
- //RGB-Farben zu HEX-Farben konvertieren.
- char hex[7] = {0};
- sprintf(hex,"%02X%02X%02X",helligkeit0,helligkeit1,helligkeit2);
- //Deklaration der Strings, die an den Output gesendet werden.
- String rWert = String(helligkeit0);
- String gWert = String(helligkeit1);
- String bWert = String(helligkeit2);
- String rgbWerte = String(" R" + rWert +" G"+ gWert +" B"+ bWert);
- String hexWert = String(hex);
- //Senden an LCD-Display
- lcd.setCursor(0, 0);
- lcd.print(" ");
- // lcd.setCursor(0, 1);
- // lcd.print(" "); //Redundant
- lcd.setCursor(0, 0);
- lcd.print(rgbWerte);
- lcd.setCursor(0, 1);
- lcd.print("#" + hexWert);
- //Aktualisiert Sel:ROT/GRU/BLA
- lcd.setCursor(9, 1);
- if (farbe == 0)
- {
- lcd.print("Sel:ROT");
- }
- else if (farbe == 1)
- {
- lcd.print("Sel:GRU");
- }
- else
- {
- lcd.print("Sel:BLA");
- }
- Serial.println(rgbWerte);
- Serial.println(hex);
- //Vergleichsvariablen
- oldHelligkeit0 = helligkeit0;
- oldHelligkeit1 = helligkeit1;
- oldHelligkeit2 = helligkeit2;
- oldFarbe = farbe;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement