www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LEDs Helligkeit verändern


Autor: Christian Krummrich (bulls3y3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich versuche gerade mit einem Testboard (8051) die Leds 
anzusteuern und deren helligkeit zu verändern.
Gibt es da schon irgendwelche fertigen Codeteile, da ich das nicht auf 
die reihe bekomme.wäre auch über einen hilfreichen link dankbar!

mfg Christian

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja viel code brauchst du nicht, da du ja nur ein einfaches pwm 
benötigst, je nach ausstattung musst oder kanst du dieses soft- oder 
hardwaremässig erzeugen...

zeig mal was du hast..

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christian Krummrich (bulls3y3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ daniel, was meinst du, was ich habe?
habe nen kleines testboard mit 8051 und steuere das über keil µVision. 
Led blinken lassen ist ja kein ding, main loop und dann bestimmtes 
muster an port1 ausgeben lassen.
doch wie bekomm ich die leds z.b. gedimmt? habe noch nicht viel ahnung 
und will da langsam einsteigen

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PWM bedeutet doch nur, dass man den Pin oft ein- und ausschaltet, das 
Verhältnis von Ein- zu Gesamtzeit gibt dann die relative Helligkeit an.

Wenn Du den Link von Peter ansiehst findest Du dort effektiv alles, um 
eine Software-PWM mittels Timerinterrupts zu erzeugen, das klappt 
bestimmt auch mit deinem 8051 und deinem Testboard, bis auf den Teil 
"knight_rider()" ist das alles sehr allgemein gehalten.

Wenn Du zu den Portpins noch den Timerinterrupt ansteuern kannst hast Du 
bereits alles zusammen!

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

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die Leds blinken lassen kannst, hast du schon die
erste Hürde zu einer Software PWM geschafft.

Dimmen ist auch nichts anderes als Blinken. Das Blinken
ist so schnell, dass man das eigentliche Blinken nicht mehr
sieht. Der Dimmgrad ist nichts anderes als das Verhätlnis
von Ein-Zeit zu Aus-Zeit. Je kürzer die Ein-Zeit ist, desto
dunkler erscheint die LED.

Autor: Christian Krummrich (bulls3y3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich danke euch für eure erklärungen!
werde es heute mal ausprobieren, denke aber es wird funktionieren dank 
eurer hilfe!

mfg christian

Autor: Christian Krummrich (bulls3y3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuche gerade den code zu verstehen
jedoch was macht dieser teil? was bedeutet das --?
>if( --pwm[0] == 0 )
>    PWM0 = 0;

oder
>pwm[0]--;

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
i-- ist dasselbe wie i=i-1

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für
i--; // entspricht i=i-1;
--i; // entspricht ebenfalls i=i-1;
gilt das, aber i-- ist nicht immer dasselbe wie i=i-1.

Überlegen wir uns mal folgendes:

i=1;
if (i--==0)
  tolleFunktion();

oder

i=1;
if (--i==0)
  tolleFunktion();

Nach diesem Code ist immer i==0.
Aber im ersten Teil wird i erst ausgewertet (und (1==0)==false), im 
zweiten Teil erst dekrementiert, dann ausgewertet, d.h. die Bedingung 
ist nur im zweiten Fall erfüllt.

An dieser Stelle irrt man sich um 1, wenn man die -- oder ++ auf die 
falsche Seite macht, Quelle vieler schöner Fehler in meinen wenigen 
C-Programmen, wenn man z.B. irgendwo bei i==0 auf A[--i] zugreift und 
eigentlich A[i--] meinte, das gibt böse Fehler, wenn man in den falschen 
Speicherbereich kommt ;)

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

Bewertung
0 lesenswert
nicht lesenswert

           |   Phrase            | Phrase
 ----------+---------------------+----------------
 Kurzform  |   j = i--;          | j = --i;
           |                     |
 Langform  |   j = i;            | i = i - 1;
           |   i = i - 1;        | j = i;
           |                     |

             j bekommt den Wert    j bekommt den
             von i vor der         manipulierten
             Manipulation          Wert von i

Analog geht i++ bzw ++i

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schön übersichtlich dargestellt, ich glaub so versteht es wirklich jeder 
:)

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.