mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED Lightshow mit verschiedenen Programmen


Autor: Deniz Kökden (thegamer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Deniz Kökden (thegamer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Deniz Kökden (thegamer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
danke das Problem ist nun auch gelöst ;)
So ich test das mit dem Schalter jetzt mal und meld mich dann!
mfG

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deniz Kökden wrote:
> Hi,
> danke das Problem ist nun auch gelöst ;)

Prust.
Der war gut :-)

Autor: 4xA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Deniz Kökden (thegamer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ja pausen mach ich mit
sleep_ms(1000);
 Richtig?
mfG

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deniz Kökden wrote:
> Hi,
> ja pausen mach ich mit
sleep_ms(1000);
 Richtig?
> mfG

Kommt drauf an welchen Compiler du benutzt, da schlafen kein 
C-Standardkonstrukt ist.

Beim WinAvr heist das dann
_delay_ms( 1000 );

Aber als eifriger Tutoriumsleser weißt du das natürlich.

Autor: 4xA (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Deniz Kökden (thegamer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
nun ist aus nem Tutorial vom Roboternetz...
ich hab übrigens schon viel gebastelt am Code ist ja echt ne Schande für 
den Atmega8 das der so was leichtes machen muss^^
mfG

Autor: Deniz Kökden (thegamer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Deniz Kökden (thegamer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Deniz Kökden (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
so also ich habe mein Programm nun fertig geschrieben.
Danke nochmal an alle!

Autor: C4ve (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tach!

Ich bin da mal nen bischen neugeirig... :-)
Gibt es davon Bilder odern am beseten ein Video vom Case in action ;-)


MfG
C4ve

Autor: Deniz Kökden (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
noch nicht muss mir jetzt mal die ganzen LED's einbauen ;)
Dann hab ich halt parallel noch 2 Projekte...
Ich melde mich 100% wenns so weit ist!
mfG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.