// RGB mit Temperatur-Sensor und Ausgabe auf 2 LEDs // Es werden nur Temperaturen über 0 Grad Celsius ausgewertet. // Die verwendete LED hat 2 blaue Dioden, eine rote und eine gruene const int inPin = 0; // Analogpin an dem der LM35 hängt const int redPin = 3; // Roter Pin const int greenPin = 11; // Gruener Pin const int bluePin1 = 6; // Blauer Pin1 const int bluePin2 = 9; // Blauer Pin2 int R, G, Ba, Bb; // Farbkomponenten für RGBB int index = 0; // Index für die Arrays // Arrays für die Farbwerte int rot[] = {0,0,0,0,0,0,0,0,0,0,0,0,1,5,9,14,20,27,35,44,54,65,77,90,104,119,135,150,164,177,189,200,210,219,227,234,240,245,249,252,254,255}; int gruen[] = {0,0,26,48,74,98,120,140,158,174,188,200,210,220,230,240,245,250,255,250,245,240,230,220,210,200,188,174,158,140,120,98,74,48,26,0,0,0,0,0,0,0}; int blau1[] = {255,240,224,207,189,170,150,129,107,84,60,35,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,130,160,200,230}; int blau2[] = {255,240,224,207,189,170,150,129,107,84,60,35,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,30,40,50,60}; void setup() { Serial.begin(9600); // Zur Kontrolle, kann spaeter entfernt werden } void loop() { // Temperatur Auswertung int value = analogRead(inPin); long celsius = (value * 500L)/1024; // 10mV je Grad C if (celsius >= 0 && celsius <= 41) { index = celsius; } else if (celsius < 0) { index = 0; } else { index = 41; } // Zuweisen der Farbwerte R = rot[index]; G = gruen[index]; Ba = blau1[index]; Bb = blau2[index]; // Ausgabe der LED analogWrite(redPin, R); analogWrite(greenPin, G); analogWrite(bluePin1, Ba); analogWrite(bluePin2, Bb); // Ausgabe der Werte am Serial Monitor zur Kontrolle, ob die Werte korrekt ermittelt werden. Kann beim Final entfernt werden Serial.print(celsius);Serial.print(" Grad C - RGBB ");Serial.print(R);Serial.print(", ");Serial.print(G);Serial.print(", ");Serial.print(Ba);Serial.print(", ");Serial.print(Bb);Serial.println(", "); delay(2000); // Etwas warten, damit die Farben der LEDs nicht völlig wild herumhüpfen }