LEDs sind eine gute Alternative zu echten Kerzen. Hier habe ich 4 Kerzen für einen Adventkranz mit orangenen 10mm LEDs gebaut. Das flackern der Kerzen ist über eine Zufallszeit (random) von den PWM Ausgängen und der Wartezeit realisiert. Über einen Taster werden die 4 LEDs bzw. Kerzen nacheinander eingeschaltet und über einen LDR wird der Adventskranz eingeschaltet. 

Schaltplan der Adventskranz Kerzen mit Arduino und 4 LEDs   

Die 4 mal 10mm LEDs werden an die PWM PINs angeschlossen, es ist nur wichtig darauf zu achten dass der PWM nicht höher eingestellt ist als die Spannung, die die LEDs abkönnen ohne kaputt zu gehen. Der Taster an PIN D2 schaltete den GND durch, da der interne Pullup Widerstand verwendet wird. Der LDR an PIN A0 bracht natürlich einen 1,5 K.Ohm Widerstand.  

1 Kerzenflacken Arduino Code Simulation Adventskranz

PIN OUT: 5,6,9,10 (PIN2 auf HIGH)

PIN IN: D2 Taster, A0 LDR mit Pull Down auf GND (1 k.Ohm bis 10 K.Ohm) 

2 Kerzenflacken Arduino Code Simulation Adventskranz

 

Kerzenfallensimulation mit Ardublock (Arduino) 

 Das Programm ist recht einfach. Da ich der Einfachheit wegen Delay Schleifen werde habe ich mich entschieden zum wechseln der Tage einen Interrupt PIN (2) zu verwenden. Da dieser in Ardublock nicht entprellt werden kann (zum Beispiel über 1000 ms), setze ich eine digitale Variable auf "true" und setze diese im Programm dann erst nach 1000ms auf "false". Über den falls/sonst Block schalte ich die LEDs ein wenn der LDR einen Wert misst der für "dunkel" eingestellt ist. Ist dies nicht der Fall werden die LEDs über die Variable Tage eingeschaltet. 

Kerzenflacken Arduino Code Simulation 2

 

 Die Simulation der Flamme realisiere ich wie oben geschrieben aus "Faulheit" einfach über zwei Zufallszahlen von 50 (nicht ganz aus) und 200 (LED geht nicht kaputt) am PWM PIN und von 0 (keine Zeit) bis 100 (1/10 Sekunde) am Delay Block. So Flackert die Kerze zufällig in der Helligkeit und in der Zeit.

Kerzenflacken Arduino Code Simulation 3

 

 Hier noch mal das ganze Programm im Überblick. 

Kerzenflacken Arduino Code Simulation 4

 

Arduino Code von Ardublock erzeugt:    

 

 

int tage = 0;
long ZeitVariable = 0L;
bool umschalten = false;
int ldr = 0;
void Unterprogramm();

void ledaus();

void interrupt();

 

void setup() {
pinMode(2, OUTPUT);
Serial.begin(9600);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
attachInterrupt(0, interrupt, CHANGE);

tage = 0;

digitalWrite( 2 , HIGH );

ledaus();

}

void loop() {
ZeitVariable = millis();
while(ZeitVariable + 1000L >= millis()) {
if (( ldr < 200 )) {
Unterprogramm();
if (( tage == 5 )) {
tage = 0;
ledaus();
}
}
else {
ledaus();
}
if (( umschalten == true )) {
tage = ( tage + 1 );
Serial.print("tage ");
Serial.print(tage );
Serial.println();
Serial.print("Nachricht ");
Serial.println();
delay( 1000 );
umschalten = false;
}
}
ldr = analogRead(0);
Serial.print("LDR---- ");
Serial.print(ldr );
Serial.println();
}

//Sonntage
void Unterprogramm() {
if (( tage == 1 )) {
analogWrite(5 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
}
if (( tage == 2 )) {
analogWrite(5 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
analogWrite(6 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
}
if (( tage == 3 )) {
analogWrite(5 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
analogWrite(6 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
analogWrite(9 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
}
if (( tage == 4 )) {
analogWrite(5 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
analogWrite(6 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
analogWrite(9 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
analogWrite(10 , random( 50 , 200 ));
delay( random( 0 , 100 ) );
}
}

//ausschalten
void ledaus() {
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
umschalten = false;
}

void interrupt() {
umschalten = true;
}

 


Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.