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
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
hallo Jonathan Strobl
wie meinst du das genau mit vcc???? also ist vcc direckt an pin 15 oc1s
dran, und dann parallel ein 1 oder 10 kohm mit der led. oder wie darf
ich das verstehn. hast du kein schaltbid?????
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
Jonathan Strobl
also muss ich vom vcc auf den schalter gehen und dann vom schalter zum 1
kohm, und dann auf portb1(oc1a). und mit der led dann auf welchen
port?????
Sascha Möwert schrieb:> portb1(oc1a)
Fällt mir jetzt erst auf: Du benutzt den doch schon für die PWM. Du
kannst einen Pin nur für eine Funktion benutzen. Ich glaub, Dir mangelt
es noch ein Bisschen an Grundlagen.
Mach doch lieber erst mal das AVR-Tutorial (<-- hier drücken g) durch.
Gruß
Jonathan
also wenn ich mir das so anschaue dann ist der portb1 (oc1a) der pwm
ausgang da muss die led mit 1kohm zum gnd. und der schalter / taster
kann ich ja dann auf portc.1 schalten. sehe ich es richtig. da das
programm den pwa ausgang schaltet.
Sascha Möwert schrieb:> also wenn ich mir das so anschaue dann ist der portb1 (oc1a) der pwm> ausgang da muss die led mit 1kohm zum gnd. und der schalter / taster> kann ich ja dann auf portc.1 schalten. sehe ich es richtig. da das> programm den pwa ausgang schaltet.
Ja, das ist richtig.
Gruß
Jonathan
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??????
$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.
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.
ja das werde ich nicht vergessen. so werde jetzt mal ein wenig lesen und
schlafen gehen. so werde mich morgen melden. gute nacht. und danke schon
mal für die hilfe
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
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
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
Eigentlich laufen Mikrocontroller-Programme in Endlosschleifen (oder
schlafen), und machen nur etwas, wenn ein Taster gedrückt wird oder ein
sonstiges externes Event ausgelöst wird.