Forum: Mikrocontroller und Digitale Elektronik LED Dimmen mittels PWM (Atmega 328p)


von Peter (Gast)


Lesenswert?

Hi,

wie schon im Titel beschrieben will ich eine LED an PB1 meines Atmega 
328p mit einem Taster (an PD6) und PWM dimmen. Das soll wie folgt 
ablaufen:
Wenn der Taster nur einmal gedrückt wird geht die LED an und bleibt auch 
an. Wenn ich den Taster dann wieder drücke geht sie wieder aus. Wenn die 
LED an ist und ich den Taster gedrückt halte soll die LED runter Dimmen 
bis die LED nur noch sehr Dunkel ist. Wenn ich dann wieder gedrück halte 
dimmt sie wieder hoch auf den höchsten Wert. (Nach einfachem drücken 
soll die LED natürlich immer aus gehen).
Nur habe ich leider keine Ahnung wie das funktionieren soll. Natürlich 
habe ich mich schon ein bisschen in die ganze Thematik mit PWM 
eingelesen aber ich verstehs einfach nicht wie das gehen soll.
Als Programmiersprache verwende ich "C".
Wäre echt super wenn mir einer von euch da mal etwas zusammenschreiben 
könnte oder mir wenigstens (leicht verständlich) etwas dazu erklären 
könnte. Bitte kein Fachchinesich da ich auf diesem gebiet nicht 
sonderlich bewandert bin.

MfG
Peter

von Joe (Gast)


Lesenswert?

Lass die LED erst mal im Sekundentakt blinken und frage dann nochmal 
hier an.

von Peter (Gast)


Lesenswert?

Was genau soll das den bringen ?

von Route_66 H. (route_66)


Lesenswert?

Peter schrieb:
> Was genau soll das den bringen ?

Dann funktioniert:
-deine Entwicklungsumgebung,
-deine Programmierhardware,
-die Hardware zum Ansteuern der LED,
-deine Takterzeugung.

Nächster Schritt: LED mit Taster Ein- und Ausschalten.

von Peter (Gast)


Lesenswert?

Soweit sollte alles funktionieren.
Mit "Takterzeugung" meinst du den Takt, der vom Quarz erzeugt wird ?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du brauchst eigentlich nur
https://www.mikrocontroller.net/articles/Entprellung#Timer-Verfahren_.28nach_Peter_Dannegger.29

und ein klein wenig Gehirnschmalz. Die o.a. Routine liefert dir auch 
kurze und lange Tastendrücke extra.
Dabei gehe ich davon aus, das deine PWM (Timer 1, OC1A) schon 
funktioniert.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

Matthias S. schrieb:
> Du brauchst eigentlich nur
> 
https://www.mikrocontroller.net/articles/Entprellung#Timer-Verfahren_.28nach_Peter_Dannegger.29

Aber das ist doch in Assembler geschrieben.
Oder meinst du den Code darunter ?

von Bastian W. (jackfrost)


Lesenswert?

Ein Stück drunter ist der C Code.

Mit dem kannst du das alles machen was deine Tasten machen sollen.
Du brauchst dann nur noch die PWM einbauen.


Gruß JackFrost

: Bearbeitet durch User
von Sascha (Gast)


Lesenswert?

Und guck dir an was ne Statemachine ist.
Sonst entsteht für die "Wenn Taster, dann..." Regeln sehr schnell 
unübersichtlicher Spaghetticode.

von Peter (Gast)


Lesenswert?

Ok danke erstmal ich werd das wenn ich zeit habe mal alles durchgehen. 
Melde mich dann wieder :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.