Arduino Blinklicht und Lauflicht
Da ich grade mal Lust hatte Marc (virtualmarc) ein bisschen zu ärgern habe ich eines seiner kleinen Projekte nachgebaut.
Hier erst einmal das Original:
Das Teil ist ein sehr simples Blinklicht mit zwei LEDs.
Als ersten Teil meines fiesen Planes habe ich das ganze einmal nachgebaut, das sah dann so aus:
Den Quelltext möchte ich euch hierfür jedoch nicht extra aufschreiben, es ist eigentlich der gleiche wie in den Beispielen nur halt mit Poti und zwei LEDs…
Als ich das ganze so blinken gesehen habe dachte ich mir.. das kann noch nicht alles sein.. da müssen mehr LEDs dran.. ja so ergab sich letztendlich eine Zahl von acht LEDs…
Da es viel zu umständlich wäre acht LEDs einzeln anzusprechen und jedes mal mit nem eigenen Delay usw zu versehen hab ich nat. mit Schleifen gearbeitet. Das ganze läuft dann so ab das die LEDs einzeln nacheinander aufleuchten. Sobald man den Knopf drückt wird der Vorgang beendet und das eigentliche Blinken bzw Laufen fängt an. Ein weiterer Druck auf den Knopf startet das Setup wieder.
In dem Programm ist ein kleiner Fehler enthalten den man auch im Video sehen kann: Beim erneuten einstellen der LEDs bleiben LEDs über dem gewählten Bereich aktiv wenn diese vorher aktiv waren (die grüne die die ganze zeit über leuchtet und die rote die kurz beim erneuten einstellen aktiv bleibt).
Hier der Quelltext, die Schaltung müsst ihr euch selbst denken..:
int startpin=2;
int count=0;
int potipin=0;
int button=12;
void setup(){
pinMode(button,INPUT);
while(1){
count++;
pinMode(count+startpin-1,OUTPUT);
digitalWrite(count+startpin-1,HIGH);
delay(1000);
if(digitalRead(button)) break;
}
for(int i=startpin;i<startpin+count;i++){
digitalWrite(i,HIGH);
}
delay(1000);
}
void loop(){
if(digitalRead(button)) break;
for(int i=startpin;i<startpin+count;i++){
for(int j=startpin;j<startpin+count;j++){
if(i==j){
digitalWrite(j,HIGH);
}else{
digitalWrite(j,LOW);
}
}
delay(analogRead(potipin));
}
}


