LED Lightshow mit verschiedenen Programmen

OP #1230363
Lesenswert?

Hi,
also ich habe hier nen Atmega8-16PU und möchte ihn gerne für eine 
Lightshow benutzen!
Der Atmega soll in einen "Casemod" (neudeutsch -> Gehäuse das wie ein 
Tannenbaum leuchtet) und zwar habe ich hier nen Taster und LED's und ich 
habe auch schon so basis wissen in C und möchte das wenn ich auf den 
Taster drücke immer ein anderer Code ausgeführt wird sozusagen 
Programmwechsel!
Wenn das alles klappt möchte ich evt. noch ein Display reinmachen wo 
dann noch steht welches Programm gerade ausgewählt ist und wenn das auch 
geht denke ich über eine Temperaturanzeige im Display nach!
Frage1:. Geht das alles mit einem Atmega8 bzw mit einem AVR?
Frage2:. Muss ich den Schalter genauso anschließen wie eine Led (Port 
und GND?)
Frage3:. Welches Display (Schwarz-Weiß/Grün) sollte ich denn nehmen? Ich 
würd gerne ein einfaches portsparendes nehmen!
Frage4:. Der AVR wird mit 5V betrieben reicht das aus für alles?

Ach hier übrigens mein Vorhaben bezüglich der LED's!
Ich hab hier kleine Streifen von einer Lochraster Platine die ich mit 
Roten und Blauen LED's besetzt habe!
Ich möchte nun das einmal alle Roten LED's, dann alle Blauen LED's dann 
so einen Knight Rider Effekt.
Aber! bei meinen ersten Versuchen hatte ich Probleme mit der 
Geschwindigkeit!
Mach ich den Takt zu hoch sieht man das Blitzlich kaum!
mach ich nen Timer rein wird das ganze zu lahm und es sieht nicht wie 
Kinght Rider sondern es sieht so aus wie als wenn die einzeln nach 
einander Blinken!
Ich hoffe ich versteht mich ;)
mfG
Gast #1230377
Lesenswert?

Hallo Deniz!

Zu Frage1:
Klar! Sollten die I/Os nicht ausreichen könntest du unter Einsatz von 2 
I/Os einen I2C Bus Programmieren und darüber die Anzahl Schaltbarer 
Kanäle um ein vielfaches erweitern.

Zu Frage 2:
Sollte dein µC über interne Pullup Widerstände verfügen würde das im 
groben und ganzen Klappen. Vielleicht solltest du über eine RC 
Entprellung nachdenken.

Zu Frage 3:
Ich denke das unterliegt ganz deinem Geschmack. Von der Ansteurung sind 
die meistens gleich.

Zu Frage 4:
Wofür konkret soll das denn reichen? Um LEDs anzusteurn und das Display 
reicht das in der Regel!

Solltest du "viele" LEDs ansteuern wollen so solltest du einen Wald und 
Wiesen Transistor als Schalter einsetzen um deine I/Os nicht zu 
überlasten.

Gruß Philipp
OP #1230401
Lesenswert?

Hi,
danke nun das mit der Temperatur vergess ich mal :P
Also es sind 8 LED's -> 4 Blaue und 4 Rote !
Der Schalter ist aus nem alten CD Laufwerk,ich würde jetzt als erstes 
gerne mal wissen wie ich einen Schalter benutze was ja eigentlich ganz 
einfach ist oder? Und dann muss ich halt abfragen welches Program 
derzeitig aktiv ist und was das nächste Programm ist,außerdem würde ich 
gerne wissen wie das mit dem Knightrider Effekt hinbekomme : 
http://www.youtube.com/watch?v=0aNuVRNh1xg
mfG
Gast #1230428
Lesenswert?

auf dem microcontroller läuft immer nur ein programm ... du kannst dem 
natürlich verschiedene leuchtmodi verpassen und zwischen diesen 
umherschalten.

lauflicht:  led1 an (warten) led1 aus und led2 an (warten) ... usw.
warten kann man über warteschleifen oder mit dem timer... alles lässt 
sich so schnell oder langsam einstellen wie man lustig ist (in 
bestimmten grenzen)
Gast #1230478
Lesenswert?

Der Knight Rider Effekt ist doch eigentlich eine "Leuchtschlange" die 
durchläuft.
Also:

00000000
00000001
00000011
00000111
00001110
00011100
00111000
01110000
11100000
11000000
10000000
00000000

und zwichen den schritten ca. 100ms warten.
Das mit den Pausen bekommst du hin?

MfG
Gast #1230516
Lesenswert?

wenn du solch eine Funktion schon eingebunden hast, und diese auch 
funktioniert, sollte das passen. Wäre dann ne Pause von einer Sekunde.

Allerdings kenn ich diese Funktion auf anhieb nicht. Ist sie selbst 
geschrieben oder hast du sie aus einem vorgefertigten Projekt.
OP #1230756
Lesenswert?

Hi,
also das ist mein Code derzeitig!
Ich habe ihn schon getestet leider blinkt da alles einfach so!
Bei Knopfdruck/Langem Knopfdruck passiert nur etwas bei den ersten LEDs 
;(
Ich könnte mir vorstellen das ich das auschalten der LED's/die 
programmauswahl nicht in die while schleife machen sollte an kopf fass
Ich Programmier das mal schnell um und teste nochmal!
Wenn ihr euch das mal anschauen könntet währe es echt net ;)
PS: Der Code ist aus basis vom Schalter Code hier aus dem Forum!
Den rest habe ich mit hilfe von meinem C++ buch gemacht ...
Angehängte Dateien:
#1231124
Lesenswert?

Darf ich einen Vorschlag machen:
Vergiss erst mal die einzelnen Blinkprogramme und die Tasten.
Konzentrier dich auf einen Blinkablauf und sieh zu, dass du den 
hinkriegst. Und dann liest du in deinem Buch über Arrays nach und 
überlegst dir, wie du die Blinkabfolge über ein Array regeln kannst, 
anstatt jedes LED Ein/Ausschalten einzeln auszuprogrammierern.

Wenn du denkst, dass du Arrays verstanden hast, baust du dein 
vorhandenes Blinkprogramm so um, dass es über ein Array gesteuert wird.

Wenn das klappt, dann wirfst du die Zeitsteuerung so wie du sie hast 
raus und liest hier im Tutorial nach, wie man über einen Timer eine 
Zeitsteuerung machen kann.

Dann baust du alles so um, dass keine delay mehr vorkommen, sondern der 
Timer sich aus dem Array bedient um die jeweils nächsten LED 
einzuschalten.

Und wenn das dann klappt, kommen die Taster wieder ins Spiel. Sie 
schalten einfach für die Zeitsteuerung ein anderes Array (welches das 
abzuarbeitende Blinkprogramm enthält) durch.


Und vergiss fürs Erste gotos. Das ist für dich momentan noch ein 
sicherere Weg ins Chaos.
OP #1231136
Lesenswert?

Hi,
hey danke das werde ich machen!
Arrays genau das wort ist mir nicht mehr eingefallen...
denn Logischerweiße wenn der irgendwohin geht muss ich ja sagen hier ist 
er gerade und wenn du da bist dann geh nicht auf blau sondern auf rot :P
Nuja ich denk ich mach das erstmal so das alle Blinkabläufe sauber 
gehen!
mfG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren