Forum: Mikrocontroller und Digitale Elektronik LED automatisch dimmen


von Fabian K. (krauze)


Lesenswert?

Hallo.

Hab mir vor kurzen ein Arduino Duemilanove Board zugelegt und schon 
einiges it LED's ausprobiert. Ich hab sie leuchten lassen, blinken 
lassen. und auch shon diverse Lauflichter programmiert.

Nun habe ich gesehendas jemand eine LED automatisch (ohne Poti oder so) 
hat dimmen lassen. So das sie gleichmäßig in ihrem voreingestellten 
Zeitabstand von ganz dunkel bis ganz hell und wieder bis ganz dunkel 
gedimmt wurde.

Hat dafür jemand einen Code oder kann mir sagen wie das geht?

LG

von ich_eben (Gast)


Lesenswert?

PWM ist hier wohl das Stichwort, man schaltet die LED ganz schnell ein 
und aus (mehr als 100 mal in der sekunde) je nach verhältnis von an und 
auszeit wird die led heller oder dunkler

von Ralf (Gast)


Lesenswert?


von Fabian K. (krauze)


Lesenswert?

Danke für die schnellen antworten.

Aber ich Programmiere in Arduino, kann mit den Programmcodes somit 
leider nix anfangen!?

LG

von Fabian K. (krauze)


Lesenswert?

Kann mir jemand in diesem Programm- Code die loop Funktion so ändern das 
die LED wie gewünscht aufleuchten?  also zb 2 sekunden von dunkel über 
hell bis wieder dunkel !?

1
int ledPin = 13;                
2
 
3
void setup()                    
4
{
5
  pinMode(ledPin, OUTPUT);      
6
}
7
 
8
void loop()                     
9
{
10
                  
11
12
}

Danke

von Karl H. (kbuchegg)


Lesenswert?

Fabian K. schrieb:
> Kann mir jemand in diesem Programm- Code die loop Funktion so ändern das
> die LED wie gewünscht aufleuchten?

Sorry, aber das ist kein Code.
Das ist ungefähr so, wie wenn du mit einer M8 Schaube ankommst und sagst 
du willst ein Auto bauen und du hättst schon mal angefangen und dabei 
stolz die M8 Schraube in die Höhe hältst.

Fang mit den Grundlagen an.
Bring eine LED zum leuchten
Beschäftige dich mit PWM und wie man die mit einem Timer in Hardware 
realisieren kann.
Und dann sieh zu dass du diese PWM in einem 2 Sekunden Intervall alle 
100ms in ihren Einstellungen so veränderst, dass sich die Helligkeit 
alle 100ms verändert.

Und vergiss loop-ing. So wird das nichts mit der Helligkeitsregelung 
einer LED. Du brauchst dazu Timer!

von Fabian K. (krauze)


Lesenswert?

Grundlagen hab ich mit den LED's schon durch.
Sie Leuchten, Blinken und LAuflichter hab ich auch shcon gemacht.

Ich hab aber die Erfahrung gemacht das ich aus Beispielen am Besten 
lerne.

Und irgendwer wir doch mit sicherheit schonmal sowas programmiert haben, 
sodass er mir den Programmcode posten kann.?

LG

von PWM (Gast)


Lesenswert?

...in den genannten Tutorials findest du genug Beispielcode, den du halt 
nur für deine Hardware anpassen musst! Bei dieser Anpassung lernst du 
vielmehr, als wenn du fertigen Code vorgesetzt bekommst!

von Karl H. (kbuchegg)


Lesenswert?

Fabian K. schrieb:

> Ich hab aber die Erfahrung gemacht das ich aus Beispielen am Besten
> lerne.

Ja, das kennen wir schon.
Andere nennen das 'Malen nach Zahlen' und denken sie lernen malen, wenn 
sie vordefinierte Felder mit vordefinierten Farben ausmalen.

Im Ernst. Deine Aufgabenstellung ist nicht schwer, wenn man Timer und 
Hardware-PWM verstanden hat. Lernen heißt auch und vor allen Dingen: 
sich selbst etwas erarbeiten. Wenn dir hier jemand eine fertige Lösung 
aus dem Nichts präsentiert, lernst du genau 0 dabei. Du tippst es 
einfach ab, freust dich das es funktioniert, sagst vielleicht noch: Ach, 
so macht man das. Und wenn du das nächste mal ein ähnliches aber doch 
anders geartetes Problem hast, weißt du wieder nicht, wo du anfangen 
sollst.

Schnapp dir das Datenblatt deines µC und studiere die Timer Abschnitte 
darin. Timer sind das um und auf, die Arbeitspferde deines µC. Studiere 
auch die Tutorien hier auf der Site. Ist egal, wenn das das 
Assembler-Tutorial ist, die grundlegenden Dinge sind identisch zu C, 
lediglich der Code unterscheidet sich.
Mach ein paar Timer Vorübungen und realisiere letztendlich die PWM mit 
einem Timer in Hardware. Dein erstes Ziel ist es, dass du einen 
Helligkeitswert im Programm als fixe Zahl vorgibst, und die LED wird auf 
diese Helligkeit eingestellt. Und erst wenn das klappt, gehst du her und 
veränderst diesen Vorgabewert in regelmässigen Zeitabständen.

Ganz anders hingegen sieht es aus, wenn du Code präsentierst. So nach 
dem Muster: Ich erzeuge meine PWM mit diesem und jenen Code, aber es 
funktioniert nicht. Wo habe ich meinen Denkfehler?
Dann wirst du mit Hilfe geradezu überschüttet.

von Fabian K. (krauze)


Lesenswert?

Danke für diesen Bitrag.

Das klingt schon deutlich hilfreicher als einige andere.

Danke ;)

von MrMosfet (Gast)


Lesenswert?

Fabian,
suchst du vielleicht sowas:

www.dieelektronikerseite.de

Basteleien -> Weichblinker

lg.

von MrMosfet (Gast)


Lesenswert?

PS: Du kannst ja einfach die Kapazitätswerte der Elkos ändern für deine 
gewünschte Blinkfrequenz.

von Mike C. (chaosmike)


Angehängte Dateien:

Lesenswert?

Hey Leute

Hab so ein ähnliches Problemchen:

Ich möchte LED's mit einem Fade IN und Fade Out Effekt ausstatten, 
jedoch muss es mit einem MosFet funktionieren (Buz11), hab schon einige 
getestet, aber entweder machte der MosFet nichts oder wenn der Taster 
losgelassen wurde dann dauerte es noch einige Sekunden bis der MosFet 
wieder langsam die LED verdunkelte.

Hab mal den Schaltplan angehängt, bei dem es noch einige Sekunden 
dauerte bis der MosFet reagierte.

Also was ich will ist ne Schaltung die, wenn der Taster losgelassen wird 
dass dann sofort der Vorgang mit dem verdunkeln beginnt.

Hoffe irgendjemand hat da ne Lösung.
Vielen Dank im voraus !!!   (-:

von Gast (Gast)


Lesenswert?

hier ist das was du suchst: http://arduino.cc/en/Tutorial/Fading

aber an deiner stelle würde ich die arduino ide nicht nutzen. es ist 
damit zwar sehr einfach etwas schnell und lauffähig zu erstellen, aber 
man wird nie die leistungsfähigkeit und vielfältigkeit der hardwarenahen 
c programmierung kennen und schätzen lernen. kaufe dir zu deinen board 
entweder einen avr dragon oder mkii und nutze das avr studio. arbeite 
die dazu noch das tutorial hier auf der seite durch und die welt der avr 
µC steht dir offen.

nicht das ich was gegen das prinzip der arduino boards und deren ide 
hätte, aber man ist doch sehr eingeschränkt und debuggen kann man damit 
auch nicht. ich habe hier selbst so ein board rumliegen (ist ca. 3 jahre 
alt) damals fand ich es noch ganz nett innerhalb von 5 minuten eine led 
zum blinken zu bringen, aber irgendwann wollte ich auch die grundlagen 
und das ganze drum herum kennen und verstehen zu lernen.

aber das ist nur meine meinung und empfehlung

von Mike C. (chaosmike)


Lesenswert?

Sey
Danke für deine schnelle Antwort ! (-;

Leider kenn ich Arduino gar nicht, und AVR kenne ich aber hab noch nie 
AVR programmiert also kann ich es auch ni^cht.
Hab aber viel darüber gelesen aber ich versteh's nicht wirklich.
Das Tutorial (finde ich) ist wohl für Profi-Anfänger.

Trotzdem hab ich nen AT90S2313 herum liegen, hab ihn gestern an den PC 
angesteckt, das funktionierte +/- Software (PonyProg) konnte ihn 
auslesen aber weder beschreiben noch löschen.

Vielleicht hat jemand sowas wie ein LED Blinker für mein AT90S2313. 
(fertig geschrieben bitte) will zuerst einen programmieren und dann erst 
selbst meine eigenen Befehle schreiben.

Vielen vielen Dank
Tschüss

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Mike C. schrieb:
> Vielleicht hat jemand sowas wie ein LED Blinker für mein AT90S2313.
> (fertig geschrieben bitte) will zuerst einen programmieren und dann erst
> selbst meine eigenen Befehle schreiben.
Ich meine, dass der auch im Tutorial veröffentlicht ist. Ansonsten habe 
ich den Code schon öfters im Forum gesehen. Mal suchen. Btw. der 
Prozessor ist der Vorgänger des ATtiny2313 (ohne internem 
RC-Oszillator).

Hier: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29

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.