www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LED Lauflicht


Autor: Hans Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habe ein kleines bis mittleres Problem:

Ich will mit ein 8515 ein kleines Lauflicht bewerkstelligen (max. 8
LEDs), welches langsam angeht (LED 1 fade in) und ein fliessender
Übergang zu den anderen LEDs stattfindet (LED 1 fade out + LED 2 fade
in).
Nun kenne ich mich leider mit Assembler nur so weit aus, dass ich das
Lauflicht ohne fliessenden Übergang selber programmieren kann (LED 1
an; LED 1 aus + LED 2 an), doch bleibt mir bis jetzt das Verständnis,
wie ich das ganze mit ein PWM realisieren soll, recht verschlossen.

Kann mir jemand vielleicht mit einer Erklärung (in einfachen Worten)
weiterhelfen oder vielleicht mit einen Programmcode der den wechsel bis
zur LED 2 beschreibt weiterhelfen?
Leider weiß ich auch noch nicht genau, wie man einen Interrupt
auslöst?

Eine reine Hardwarelösung mit Kondensatoren kommt leider nicht in
Frage, da ich verschiedene Lauflicht-Programme mit harten und weichen
Übergang haben möchte.

Für jede Hilfe bin ich dankbar.

Danke. Hans

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da brauchst du eine 8-Kanal PWM, d.h. jeder Kanal muß eine eigene PWM
bekommen. Ist schon mit einem 2313 möglich, es geistert immer wieder
eine 8-Kanal Servo-Ansteuerung für den 2313 durch die Gegend, die
sollte einige Denkanstöße geben können.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht schon mit 8-Kanal-PWM, ist aber kaum mit einer Servoansteuerung
verwandt. Dort ist es ausreichend, immer einen Kanal nach dem anderen
zu erzeugen, also reicht dafür ein einziger Hardwaretimer und ein ganz
klein wenig Software, die die Ports schaltet.
Aber ist trotzdem kein Problem, war hier vor kurzem.

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht z.B. so:
Du rufst (per Timerinterrupt) eine Funktion 10000 mal pro Sekunde auf.
Dort ist ein Zähler, der immer von 1 bis 100 läuft und dann wieder von
vorne beginnt.

Dann brauchst Du 8 (Byte-)Variablen für die Helligkeit der 8 LEDs. Der
Wertebereich geht von 0 (LED aus) bis 100 (immer an).

Ist die Helligkeitsvariable einer LED größer oder gleich dem o.g.
Zähler, dann wird die LED angemacht, ansonsten aus.

Leider ist die Helligkeit einer LED nicht linear zur Zeit, also in der
Hinsicht etwas rumexperimentieren.

Markus

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@crazy horse:
Eine gewisse Ähnlichkeit hat PWM mit einer Servoansteuerung schon...
;)
Wenn der Übergang fließend sein soll, brauchts mindestens 2 Kanäle
(einer, der dunkler wird und einer, der heller wird).

Autor: Edgar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans

AVRFreaks hat unter Academy ein neues Projekt: LED Fader! Ist aber
(glaube ich) für einen mega16 ;-)

Gruß,
Edgar

Autor: mbeyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Wenn das Lauflich nicht unbedingt mit einem µController realisiert
werden muss, schau dir mal den LM3914 an.

Grüsse
Matthias

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der LM3914 kann aber nicht "faden"...

Autor: Steril (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"AVRFreaks hat unter Academy"
----------
Wo gibts das zu lesen?

Autor: Edgar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steril:

bei www.avrfreaks.net anmelden, dann Academy->User Projects->complete
code
das Projekt heisst LED fades und hat die Nr. 177
Wenn Du bei AVRFreaks noch nicht als User angemeldet bist, mußt Du das
vorher tun, um auf die Downloads zugreifen zu können.

Viel Spaß weiterhin,
Edgar

Autor: Hans Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst einmal ein riesiges Dank an alle für die schnelle Hilfe. Der Link
zu avrfreaks.net hat mir sehr geholfen.

Es liegt übrings eine überarbeitete Version vom LED fader vom
12.10.2003.

@Edgar
Ein besonderen Dank an Dich.

Vielen Dank.

Hans

Autor: samo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entwerfen Sie eine C-Funktion putPattern(), die unterschiedlich lange 
Byte-Folgen auf die LEDs ausgibt
und so ein Muster, wie z.B. ein Lauflicht erzeugt. Nachdem das Muster 
ausgegeben ist, schaltet sie die
LED-Zeile wieder aus.
Die Eingangsparameter der Funktion sind ein Array mit der Byte-Folge, 
die Länge der Byte-Folge und die
Dauer in ms, für die ein Byte auf den LEDs angezeigt wird (delay). Die 
Funktion soll davon ausgehen, dass
der Port für die Ausgabe auf die LEDs bereits initialisiert ist. Sie 
verwendet, wo das sinnvoll ist, die Funktionen
aus Aufgabe 1. Geben Sie den Prototypen für putPattern() an und zeichnen 
Sie ein Aktivitätsdiagramm für
die Funktion, auf dessen Grundlage die Programmierung im Labor erfolgt.
Hinweis: Sehr kompakt wird die Programmierung, wenn die 
Eingangsparameter von putPattern()in einer
Struktur gespeichert werden, die der Funktion übergeben wird.
kann niemand mich hilfen,um diese funktion zu verstehen

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

Bewertung
0 lesenswert
nicht lesenswert
samo schrieb:
> Entwerfen Sie eine C-Funktion putPattern(), die unterschiedlich lange
> Byte-Folgen auf die LEDs ausgibt
> und so ein Muster, wie z.B. ein Lauflicht erzeugt. Nachdem das Muster
> ausgegeben ist, schaltet sie die
> LED-Zeile wieder aus.
> Die Eingangsparameter der Funktion sind ein Array mit der Byte-Folge,
> die Länge der Byte-Folge und die
> Dauer in ms, für die ein Byte auf den LEDs angezeigt wird (delay). Die
> Funktion soll davon ausgehen, dass
> der Port für die Ausgabe auf die LEDs bereits initialisiert ist. Sie
> verwendet, wo das sinnvoll ist, die Funktionen
> aus Aufgabe 1. Geben Sie den Prototypen für putPattern() an und zeichnen
> Sie ein Aktivitätsdiagramm für
> die Funktion, auf dessen Grundlage die Programmierung im Labor erfolgt.
> Hinweis: Sehr kompakt wird die Programmierung, wenn die
> Eingangsparameter von putPattern()in einer
> Struktur gespeichert werden, die der Funktion übergeben wird.
> kann niemand mich hilfen,um diese funktion zu verstehen


1) Kapere bitte keinen anderen Thread.
   Vor allen Dingen dann nicht, wenn er so gut wie gar nichts mit
   deinem Problem zu tun hat

2) In der Aufgabenstellung steht eigentlich schon so gut wie alles.
   Selbst die Lösung ist dort mehr oder weniger schon enthalten.
   Du musst das nur noch etwas formaler aufschreiben und
   programmiergerecht aufbereiten

3) Im übrigen: hab ein bischen Phantasie.
   Wonach könnte da wohl gefragt sein? Die Aufgabenstellung ergibt
   sich eigentlich schon ganz von alleine, wenn man ein bischen
   darüber nachdenkt, was wohl so sinnvoll sein könnte.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
samo schrieb:
> Entwerfen Sie eine C-Funktion putPattern(), die unterschiedlich lange
> Byte-Folgen auf die LEDs ausgibt und so ein Muster, wie z.B. ein
> Lauflicht erzeugt.

Ok, fertig. Und jetzt?

Autor: raketenfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufhören mit der Leichenschändung?

Der Thread ist doch schon so ziemlich tot

da macht eine Auto-Close-Funktion vll Sinn...

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.