Forum: Mikrocontroller und Digitale Elektronik ATTiny45 Led-Wechsellicht-Problem


von Andreas F. (mad_devil)


Lesenswert?

Hallo Forum!

Ih bin schon lange stiller Mitleser und versuche mich jetzt erstmals 
selbst an einigen Programmierungen.

Ich versiche mit 2 SMD LEDs eine Wechsellichtschaltung für einen 
Modellkrankenwagen zu erstellen.
Vieleicht hat das der Eine oder Andere schonmal in echt gesehen.
Es soll das normale Abblendlicht AN (ca 50% Helligkeit) simuliert werden 
welches dann zur "Lichthupe" verstärkt wird und dies auf und abdimment 
immer rechter / linker Scheinwerfer.

Also etwa so:

Linker / Rechter Scheinwerfer AN (50% LED Helligkeit)
Linker Scheinwerfer fadet (langsam) auf 100% / rechter noch auf 50%
Links 100% erreicht kurz halten dann / rechter fadet hoch auf 100%
links fadet herunter auf 50% / rechts erreicht 100%
und so weiterso dass immer ein gegenteiliger lauf des Lichts entsteht.

Ich habe das versucht auf einem ATTiny45 zu bewerkstelligen leider fadet 
die LED an PortB.0 langsam von 50% auf 100% und springt dann wieder 
zurück auf 50% anstatt runter zu faden.
Die LED an PortB.1 Beginnt mit 100% fadet dann auf 50% runter und 
springt dann aber wieder hoch anstatt hoch zu faden.

Ich steh irgendwie auf dem Schlauch. Vieleicht kann mir jemand den 
Fehler aufzeigen. Hier mal mein Code:
1
'=====================================================================
2
'Abblendfernlicht für Krankenwagen etc.
3
'Wenn "Clear Down" LED an Pin 5/6 (PB0/1) über Vorwiderstand an GND
4
'Wenn "Clear Up"  LED an Pin 5/6 (PB0/1) über Vorwiderstand an VCC
5
'=====================================================================
6
7
$regfile = "attiny45.dat"
8
$crystal = 1200000
9
Dim I As Byte
10
Dim D As Integer
11
Dim E As Integer
12
13
Config Portb.0 = Output
14
Config Portb.1 = Output
15
16
17
Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
18
19
'Pwm0a = 40                                                'Startwert auf 40
20
'Pwm0b = 40
21
22
23
Do
24
25
  For I = 40 To 120                                         'Hochfaden Der Led ...
26
      D = I                                                 'bis der Wert 225 (120*120/64) erreicht ist
27
      D = D * D
28
      D = D / 64
29
      E = 160 - I
30
      Pwm0a = D
31
      Pwm0b = E
32
   Waitms 17                                                'Zeiteinstellung pro Durchlauf für das Hochfaden
33
  Next I
34
35
  Pwm0a = 225
36
  Pwm0b = 25
37
  Waitms 1000                                               'Dauer Fernlicht
38
39
40
  For I = 120 To 40 Step -1                                 'Runterfaden der LED ...
41
     D = I
42
     D = D * D
43
    D = D / 64
44
    E = 160 - I
45
   Pwm0a = D
46
   Pwm0b = E
47
   Waitms 17
48
  Next I
49
50
51
  Waitms 100                                                'Pause nach dem Runterfaden
52
Loop
53
54
End                                                         'end program

Vielen Dank im Voraus

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.