Hallo, hier (http://bralug.de/wiki/ATtiny-Sonntagsspielereien#RGB-LED) habe ich gelesen, dass man mit dem ATtiny auch eine RGB-Led ansteuern kann (mit PWM). Gestern abend habe ich mal mit meinem ATtiny13 und einer LED rumexperimentiert und einen erstaunlichen "Fade"-Effekt hin bekommen. Ich habe auch 2 LEDs verwenden können (an PB0 und PB1). Bei einer RGB-Led ist es doch so, dass man mit drei von den Beinchen die Farben rot, grün und blau ansteuert und das vierte wird an GND gehangen, oder? D.h. ich bräuchte drei Ports für die PWM, um verschiedene Farben zu erzeugen? ... und hier meine Fragen dazu: * Hat der ATtiny13 3 Ports für PWM? Wenn nein, muss ich dann den ATtinyXX nehmen (und was ist XX - 25v, 45v ...)? Gibt es keinen anderen Weg? * Ich wollte diese RGB-Led (und den Aufbau: der ja aus der Batterie, dem Mikrocontroller und vier Wiederständen besteht) mit einer Knopfzelle laufen lassen (CR2032): wie lange hält die Batterie durch? Ich freue mich auf Antworten! Gruß, Max
Ein wenig googeln... http://blog.kevinmehall.net/2007/rgb-led-rainbow-fader http://www.ledhilfe.de/viewtopic.php?t=8702
Bastler schrieb: > http://blog.kevinmehall.net/2007/rgb-led-rainbow-fader > > http://www.ledhilfe.de/viewtopic.php?t=8702 Toll. Nur leider ist kein Source-Code dabei! Ich habe daher selber etwas im Internet zu Software-PWM recherchiert. Dabei bin ich auf folgenden hilfreichen Beitrag gestoßen: > Schritt 1: Schalte LED ein > Schritt 2: Warte Zeit X > Schritt 3: Schalte LED aus > Schritt 4: Warte Zeit Y > > Wenn Du X immer kleiner und Y immer größer werden lässt, wird die LED dunkler. Das habe ich auch ausprobiert mit verschiedenen Werten und das klappt sogar:
1 | $regfile = "attiny13.dat" |
2 | $crystal = 1200000 |
3 | |
4 | Config Portb.1 = Output |
5 | |
6 | Do |
7 | ' Leer |
8 | |
9 | |
10 | Portb.1 = 1 |
11 | Waitms 1 |
12 | Portb.1 = 0 |
13 | Waitms 10 |
14 | |
15 | Loop |
16 | |
17 | End |
Doch ich habe immer noch nicht ganz verstanden, wie ich mit diesem Wissen mir ein Programmkonstrukt baue, dem ich sagen kann LED_Red auf 60% und LED_Green auf 40% und LED_Blue auf 100%. Könntet ihr mir vielleicht noch ein bisschen Input geben? Gruß, Max
1ms An 10ms aus = 1ms / (10ms + 1ms) = 1/11 = 9% In Assembler geht SW-PWM in 3 Takten pro Kanal wenn man genügend Register zu verfügung hat: 3x SW-PWM würde bei 8Mhz mit 1kHz PWMfrequenz laufen (50% CPU). um das in Bascom so schnell genug zu bekommen, wirst du dir ein gutes Konzept überlegen müssen.
EinGast schrieb: > Bastler schrieb: >> http://blog.kevinmehall.net/2007/rgb-led-rainbow-fader >> >> http://www.ledhilfe.de/viewtopic.php?t=8702 > > Toll. Nur leider ist kein Source-Code dabei! Da hast du wohl ein anderes Internet als ich.
Samuel K. schrieb: > um das in Bascom so schnell genug zu bekommen, wirst du dir ein gutes > Konzept überlegen müssen. D.h. mit Bascom kann ich das vergessen? Okay, wie ist es denn in C? Und wo finde ich das mal versändlich erklärt? Überall wo ich bisher geschaut habe wurde ein bisschen erklärt und dann kam schon die Komplettlösung, ohne dass man die Lösung verstanden hat. Gruß, Max
EinGast schrieb: > D.h. mit Bascom kann ich das vergessen? Ich weiß es nicht, dafür habe ich zu wenig mit Basom programmiert, aber mit Wait wirst du nicht weit kommen. Das heißt du solltest dir überlegen wir du es am besten machst. Hier kannst du dir ein paar Ideen holen: Soft-PWM
Der ATtiny13 hat doch bestimmt auch einen Timer und einen Interrupt, oder? Wenn ich die verlinkte Seite aufrufe steht da irgendwas von "Download Source ...".
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.