Forum: Mikrocontroller und Digitale Elektronik RGB-Led und ATtiny13 - Möglich?


von EinGast (Gast)


Lesenswert?

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

von Bastler (Gast)


Lesenswert?


von EinGast (Gast)


Lesenswert?

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

von Sam .. (sam1994)


Lesenswert?

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.

von Icke (Gast)


Angehängte Dateien:

Lesenswert?

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.

von EinGast (Gast)


Lesenswert?

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

von Sam .. (sam1994)


Lesenswert?

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

von Martin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.