Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1.  
  2. //#include <Bounce2.h>
  3. //#include <LiquidCrystal_I2C.h>
  4.  
  5. #include <Wire.h>
  6. #include <LiquidCrystal.h>
  7.  
  8. const int r_led = 13;
  9. const int g_led = 8;
  10. const int b_led = 10;
  11. const int button_pin = 7;
  12. const int POT=A0;
  13. int Contrast=20;
  14.  
  15. int farbe = 0;
  16. int oldFarbe = 0;
  17. boolean buttonPressed = false;
  18.  
  19. int helligkeit0; //Rot
  20. int helligkeit1; //Gruen
  21. int helligkeit2; //Blau
  22. int oldHelligkeit0=0;
  23. int oldHelligkeit1=0;
  24. int oldHelligkeit2=0;
  25.  
  26.  
  27.  
  28. LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
  29.  
  30. void setup()
  31. {
  32. Serial.begin(9600);
  33. pinMode(r_led,OUTPUT);
  34. pinMode(g_led,OUTPUT);
  35. pinMode(b_led,OUTPUT);
  36. pinMode(button_pin,INPUT);
  37.  
  38. analogWrite(6,Contrast);
  39. lcd.begin(16, 2);
  40.  
  41. //debouncer.attach(button_pin);
  42. //debouncer.interval(5); // interval in ms
  43. //lcd.init(); // initialize the lcd
  44. //lcd.backlight();
  45. }
  46.  
  47. void loop()
  48. {
  49. buttonPress(); //Nimmt Signal von Taster und schaltet durch die Farben
  50. getValue(); //Nimmt Signal von Potentiometer und ordnet den Wert der ausgewählten Farbe zu.
  51. lightLEDs(); //LEDs leuchten mit ausgewählten Parametern
  52. sendInfo(); //LCD-Display und Konsole geben Werte visuell aus. RGB-Farbcode; Hexadezimal-Farbcode; Anzeige der ausgewählten Farbe "Sel:<color>"
  53. }
  54.  
  55. void buttonPress()
  56. {
  57. if(digitalRead(button_pin) == HIGH && buttonPressed == false)
  58. {
  59. buttonPressed = true; //verhindert mehrmaliges ausführen der Funktion während eines Tastendrucks
  60. farbe++;
  61. if (farbe > 2)
  62. {
  63. farbe = 0;
  64. }
  65. String s = String(farbe);
  66. Serial.println("Farbe "+s);
  67. }
  68. else if (digitalRead(button_pin) == LOW)
  69. {
  70. buttonPressed = false; //Taste nicht gedrückt, wieder bereit für nächste Eingabe
  71. }
  72. }
  73.  
  74. void getValue()
  75. {
  76. //Potentiometer auslesen und intensität ausgewählter Farbe manipulieren
  77. if (farbe == 0)
  78. {
  79. helligkeit0 = analogRead(POT)/4;
  80. }
  81. else if (farbe == 1)
  82. {
  83. helligkeit1 = analogRead(POT)/4;
  84. }
  85. else
  86. {
  87. helligkeit2 = analogRead(POT)/4;
  88. }
  89. }
  90.  
  91. void lightLEDs()
  92. {
  93. //LEDs ansteuern
  94. analogWrite(r_led,helligkeit0);
  95. analogWrite(g_led,helligkeit1);
  96. analogWrite(b_led,helligkeit2);
  97. }
  98.  
  99. void sendInfo()
  100. {
  101. //Abfrage ob Werte sich verändert haben, wenn ja wird der Display mit den Werten aktualisiert.
  102. if(helligkeit0 != oldHelligkeit0 || helligkeit1 != oldHelligkeit1 || helligkeit2 != oldHelligkeit2 || farbe != oldFarbe)
  103. {
  104. //RGB-Farben zu HEX-Farben konvertieren.
  105. char hex[7] = {0};
  106. sprintf(hex,"%02X%02X%02X",helligkeit0,helligkeit1,helligkeit2);
  107.  
  108. //Deklaration der Strings, die an den Output gesendet werden.
  109. String rWert = String(helligkeit0);
  110. String gWert = String(helligkeit1);
  111. String bWert = String(helligkeit2);
  112. String rgbWerte = String(" R" + rWert +" G"+ gWert +" B"+ bWert);
  113. String hexWert = String(hex);
  114.  
  115. //Senden an LCD-Display
  116. lcd.setCursor(0, 0);
  117. lcd.print(" ");
  118. // lcd.setCursor(0, 1);
  119. // lcd.print(" "); //Redundant
  120. lcd.setCursor(0, 0);
  121. lcd.print(rgbWerte);
  122. lcd.setCursor(0, 1);
  123. lcd.print("#" + hexWert);
  124.  
  125. //Aktualisiert Sel:ROT/GRU/BLA
  126. lcd.setCursor(9, 1);
  127. if (farbe == 0)
  128. {
  129. lcd.print("Sel:ROT");
  130. }
  131. else if (farbe == 1)
  132. {
  133. lcd.print("Sel:GRU");
  134. }
  135. else
  136. {
  137. lcd.print("Sel:BLA");
  138. }
  139.  
  140. Serial.println(rgbWerte);
  141. Serial.println(hex);
  142.  
  143. //Vergleichsvariablen
  144. oldHelligkeit0 = helligkeit0;
  145. oldHelligkeit1 = helligkeit1;
  146. oldHelligkeit2 = helligkeit2;
  147. oldFarbe = farbe;
  148. }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement