FADING LIGHT LED

Hier noch eine kleines Tutorial zum Thema Lichtatmosphäre und Fading. Das Video und die englische Beschreibung gibts hier. Das Arduino steuert die LED’s in Helligkeit durch eine PWM Modulation. Wie das genau funktioniert seht ihr im kommentierten Skript hier: (Einfach die LED’s an die PIN’S anschliessen – hochladen, fertig)
[sourcecode language="java"]
/*
Drei Pulsierende LED’s
*/
int green = 11; // Digital pin 11 – grüne LED
int red = 10; // Digital pin 10 – rote LED
int blue = 9; // Digital pin 9 – blaue LED (welche Farben du wirklich nimmst ist egal)
int time = 5; // define delay element (wie schnell soll pulsiert werden)
int pulsewidth; // define pulsewidth (0-255) (wie weit soll pulsiert werden – 0=aus 255=superhell)
void setup() {
// hier brauchen wir noch nix
}
void loop() {
// die LED’s langsam heller werden lassen
for (pulsewidth=0; pulsewidth <= 255; pulsewidth++){ //schleife 1 (solange bis die LED’s ganz hell sind) analogWrite(green, pulsewidth); analogWrite(red, pulsewidth); analogWrite(blue, pulsewidth); delay(time); } // die LED’s wieder dunkler werden lassen for (pulsewidth=255; pulsewidth >= 0; pulsewidth–){ //schleife 2 (solange bis die LED’s ganz dunkel sind)
analogWrite(green, pulsewidth);
analogWrite(red, pulsewidth);
analogWrite(blue, pulsewidth);
delay(time);
}
}
[/sourcecode]
Hier noch ein komplexeres Beispiel – diesmal mit noch drei Potentiometern, die sie Fading sequenz verändern in Zeit und Wert. Je nach Farbkanal.
[sourcecode language="java"]
/*
Drei Pulsierende LED’s gesteuert durch drei Potentiometer
*/
int green = 11; // Digital pin 11 – grüne LED
int red = 10; // Digital pin 10 – rote LED
int blue = 9; // Digital pin 9 – blaue LED (welche Farben du wirklich nimmst ist egal)
int poti_pin1 = 0; // PIN von POTI 1
int poti_pin2 = 1; // PIN von POTI 2
int poti_pin3 = 2; // PIN von POTI 3
int poti_var1 = 0; // wert von potientiometer 1
int poti_var2 = 0; // wert von potientiometer 2
int poti_var3 = 0; // wert von potientiometer 3
int time = 5; // define delay element (wie schnell soll pulsiert werden)
int pulsewidth; // define pulsewidth (0-255) (wie weit soll pulsiert werden – 0=aus 255=superhell)
void setup() {
// hier brauchen wir noch nix
}
void loop() {
// alle werte der Potentiometer lesen
poti_var1 = analogRead(poti_pin1);
poti_var2 = analogRead(poti_pin2);
poti_var3 = analogRead(poti_pin3);
time = ((poti_var1 + poti_var2 + poti_var3) / 600)+1;
// die LED’s langsam heller werden lassen
for (pulsewidth=0; pulsewidth <= 255; pulsewidth++){ //schleife 1 (solange bis die LED’s ganz hell sind)
analogWrite(green, pulsewidth/(poti_var1*0.25));
analogWrite(red, pulsewidth/(poti_var2*0.25));
analogWrite(blue, pulsewidth/(poti_var3*0.25));
delay(time);
}
// die LED’s wieder dunkler werden lassen
for (pulsewidth=255; pulsewidth >= 0; pulsewidth–){ //schleife 2 (solange bis die LED’s ganz dunkel sind)
analogWrite(green, pulsewidth/(poti_var1*0.25));
analogWrite(red, pulsewidth/(poti_var2*0.25));
analogWrite(blue, pulsewidth/(poti_var3*0.25));
delay(time);
}
}
[/sourcecode]
Pulsierende LED’s beeinflusst durch Piezoaktivität (2 Sensoren)
[sourcecode language="java"]
// LED ELEMENTE
int green = 11; // Digital pin 11 – grüne LED
int red = 10; // Digital pin 10 – rote LED
int blue = 9; // Digital pin 9 – blaue LED (welche
// PIEZZOELEMENTE
int sensorPin1 = 0; // Input Pin vom PIEZOELEMENT 1
int sensorPin2 = 1; // Input Pin vom PIEZOELEMENT 2
// FUNKTIONSVARIABLEN
int sensorsValue = 0; // speichert den wert von beiden Piezo Elementen
int sensorValue1 = 0; // Variable um die Werte vom Piezoelement 1
zu speichern
int sensorValue2 = 0; // Variable um die Werte vom Piezoelement 2
zu speichern
int sensibly_all = 4;
int sensibly_var1 = 2; // Sensibilität des Piezoelements 1 bestimmten
int sensibly_var2 = 2; // Sensibilität des Piezoelements 2 bestimmten
boolean piezo_switch1=false; // onoff schalter für piezo 1
boolean piezo_switch2=false; // onoff schalter für piezo 2
int time = 5; // DelayVariable Blinkfequenz
int pulsewidth; // Blinkspektrum (wie hell wie dunkel)
// SCHALTER
boolean onswitch=false; // AktionsschalterVariable (wenn Sensor aktiv)
boolean switcher=false; // Modusvariable (ich blinke / ich bin aus)
void setup() {
pinMode(green, OUTPUT); // die LED1 als Output definieren
pinMode(red , OUTPUT); // die LED2 als Output definieren
pinMode(blue , OUTPUT); // die LED3 als Output definieren
Serial.begin(9600); // Konfiguration für die Debugging Ausgabe
}
void loop() {
sensorValue1 = analogRead(sensorPin1); // ersten Piezo lesen
sensorValue2 = analogRead(sensorPin2); // zweiten Piezo lesen
sensorsValue = (sensorValue1+sensorValue2)/2; // Sensorenaktivität
zusammenfassen
if (sensorsValue>sensibly_all){switcher=true;}else{switcher=false;}
// checke ob sensorTätigkeit
if(sensorValue1>sensibly_var1){piezo_switch1=true;}//else{piezo_switch1=false;}
// wenn erster Piezo betätig wird
if(sensorValue2>sensibly_var2){piezo_switch2=true;}//else{piezo_switch2=false;}
// wenn zweiter Piezo betätig wird
if(switcher==true){ // wenn Sensortätigkeit, dann
if(onswitch==true){ // Blinkmodus ausschalten
onswitch=false;
}else{ // Blinkmodus ansschalten
onswitch=true;
}
switcher=false; //Variable für Sensortätigkeit zurücksetzen
Serial.println(sensorsValue); // Sensordaten anzeigen – zur Auswertung
}
if(onswitch==true){// wenn Blinkmodus an, dann…
Serial.println(onswitch);
// die LED’s langsam heller werden lassen
for (pulsewidth=0; pulsewidth <= 255; pulsewidth++){
if(piezo_switch1){analogWrite(green,
255);}else{analogWrite(green, pulsewidth);} // wenn piezo 1 aktiv,
dann LED1 leuchte auf!
if(piezo_switch2){analogWrite(red,
255);}else{analogWrite(red, pulsewidth);} // wenn piezo 2 aktiv, dann
LED2 leuchte auf!
analogWrite(blue, pulsewidth);
delay(time);
}
// die LED’s wieder dunkler werden lassen
for (pulsewidth=255; pulsewidth >= 0; pulsewidth–){
if(piezo_switch1){analogWrite(green,
255);}else{analogWrite(green, pulsewidth);} // wenn piezo 1 aktiv,
dann LED1 leuchte auf!
if(piezo_switch2){analogWrite(red,
255);}else{analogWrite(red, pulsewidth);} // wenn piezo 2 aktiv, dann
LED2 leuchte auf!
analogWrite(blue, pulsewidth);
delay(time);
}
piezo_switch1=false;
piezo_switch2=false;
}else{ // Blinkmodus aus
pulsewidth=0;
analogWrite(green, pulsewidth);
analogWrite(red, pulsewidth);
analogWrite(blue, pulsewidth);
Serial.println(onswitch);
Serial.println(pulsewidth);
}
//delay(120); // warte 120ms bevor erneuter Loop
}
[/sourcecode]