Led Dimmen , flackern mit Pwm

OP #2417820
Lesenswert?

guten abend ich bin schon am verzweifeln mit Pwm????? also ich möchte 
gern für mein sohn ein vulak bauen, das bauen ist kein problem. Aber das 
mit dem led dimmen. ich schreibe mit bascom und bin noch anfänger. es 
handelt sich um ein atmega8 .  ich kriege es hin mit dem runter zählen 
von 255 bis 0 und wieder rauf. bitte  um hilfe.

mfg
OP #2417840
Lesenswert?

oh ich meinte ein vulkan .... für seine dino landschaft.







es sind drei taster mit taster 1 hast du die volle leistung. mit taster 
2 unter die hälfte und mit taster 3 ist sie aus. aber ich möchte das so 
haben wenn ich eine taste drücke soll sie flackern mal heller mal 
weniger.


so der code

$sim

$regfile "m8def.dat"
$crystal = 1000000


Config Portb.1 = Input
Config Portb.2 = Input
Config Portb.3 = Input
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 
1

Do

If Pb.1 = 1 Then
Compare1a = 1023
Elseif Pb.2 = 1 Then
Compare1a = 400
Elseif Pb.3 = 1 Then
Compare1a = 0

End If

Loop
End
Persönliche Seite #2417883
Lesenswert?

Sascha Möwert schrieb:
> wie so
> muss es ein 10 kohm sein ?????

Es ist völlig egal, ob nun 1kOhm oder 10kOhm. Aber hast Du wirklich das 
hier aufgebaut?
1
       /
2
VCC---/  -------------  zum µC-Pin
3
                |
4
               ---
5
               | |
6
               | |
7
               ---
8
                |
9
                |
10
               --- GND

Sonst ist eigentlich alles OK. Du könntest höchstens mal versuchen, den 
PWM-Pin explizit als Ausgang zu definieren.


Gruß
Jonathan
Persönliche Seite #2417894
Lesenswert?

Sascha Möwert schrieb:
> wie meinst du das genau mit vcc

VCC = Deine Versorgungsspannung. Wahrscheinlich 5V.
GND = Masse, Minuspol der Versorgung. 0V.


Sascha Möwert schrieb:
> also ist vcc direckt an pin 15 oc1s
> dran, und dann parallel ein 1 oder 10 kohm mit der led

Halt, halt, halt. Damit schießt Du Dir den µC ab. Das gibt 'nen satten 
Kurzschluss.
1
     Schalter
2
        /              1kOhm
3
 VCC---/  -------------|===|---  zu Portb 1 / 2 / 3 (Taster-Eingang)
4
                 |
5
                ---
6
                | |
7
                | | 1kOhm
8
                ---
9
                 |
10
                 |
11
                --- GND

So musst Du die Taster anschließen. Die Schaltung musst Du für jeden 
deiner drei Taster aufbauen.


Gruß
Jonathan
OP #2417924
Lesenswert?

$regfile = "m8def.dat"
$crystal = 16000000

Dim A As Word
Dim B As Word
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm 
= Clear Down , Prescale = 1
Config Portc.1 = Input
Config Portb.1 = Output

Do
Toggle Portb.1

For A = 255 To 10 Step -10
Pwm1a = A
Waitms 50
Next

For A = 10 To 255 Step 10
Pwm1a = A
Waitms 50
Next

Loop
End


so das programm läuft schon mal ich bin zufrieden.
Persönliche Seite #2417926
Lesenswert?

Sascha Möwert schrieb:
> so dann kann ich ja mein programm in die tonne hauen weil ich ja die
> ausgänge genommen habe. ich muss den taster auf portc.1 = input setzen
> und den pwm ausgang dann auf  portb.1 output . so muss ich jetzt den
> taster noch den toggle befehl geben??????

Vorsicht, Du verwechselst da einiges. Mach doch mal das AVR-Tutorial 
durch und lies doch mal das Datenblatt deines Controllers. Toggle heißt, 
dass Du ein Bit umkehrst, also aus 1 wird 0 und aus 0 wird 1. Toggle ist 
also für Ausgänge (und Bits). Nimm PORTC für die Taster. Und vergiss 
nicht, den AVCC-Pin mit VCC zu verbinden.
OP #2418185
Lesenswert?

guten morgen

so habe mich ein wenig am code versucht. so da ist mein neuer versuch..


code:

$regfile "m8def.dat"
$crystal = 16000000

Dim Led1 As Word
Dim Led2 As Word

Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear 
Down , Compare B Pwm = Clear Down

Config Adc = Free , Prescaler = Auto , Reference = Avcc
Start Adc

Enable Interrupts

Config Portb.1 = Output
Config Portb.2 = Output




Do

Pwm1a = 0
Pwm1b = 0



For Led1 = 0 To 512
Pwm1a = Pwm1a + 1
Pwm1b = Pwm1b + 1

Waitms 1

Next Led1


For Led2 = 0 To 512

Pwm1a = Pwm1a - 1
Pwm1b = Pwm1b - 1

Waitms 1

Next Led2


Loop


End



über einwendung von euch,oder verbesserungen, nehme ich gern an.

mfg
#2418352
Lesenswert?

Naja, ein Flackern ist das ja nicht, sondern ein Auf- und Abdimmen. Für 
ein echtes Flackern kannst du doch einen Zufallszahlengenerator nehmen 
(den gibt es in BASIC doch bestimmt, oder?) und dann immer in 100ms zum 
nächsten Zufallswert mit Plus/Minus-Eins-Schritten hindimmen.

Gruß
Jens
OP #2418790
Lesenswert?

so ich habe es es läuft super.

code:

$regfile "m32def.dat"
$crystal = 1100592

Dim R As Word



Dim L As Word


Dim Z As Word





Config Timer1 = Pwm , Pwm = 10 , Prescale = 1 , Compare A Pwm = Clear 
Down , Compare B Pwm = Clear Down

Config Adc = Free , Prescaler = Auto , Reference = Avcc
Start Adc





Enable Interrupts

Config Portd.4 = Output
Config Portd.5 = Output

Z = 1000

Do

R = Rnd(512) + 500
Pwm1a = R
Waitms 700

L = Rnd(512) + 500
Pwm1b = L
Waitms 600


Z = Z - 1


Loop Until Z = 0

Pwm1a = 1023
Pwm1b = 1023




End

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren