... niemand sacht das, aber ich bin schon so lange in Foren unterwegs (da gab es das WWW noch gar nicht), das ich da vorsichtig geworden bin
Sodele... Software ist fertig und tut, was sie soll. Anbei der Quellcode zur allgemeinen Verwendung, falls es wer braucht.
PB0 befeuert direkt einen kleinen FET (3A- Typ aus der Grabbelkiste), der wiederum einen 1:10 Übertrager mit umzu 6V befeuert, der wiederum auf der Sekundärseite eine EL- Folie zum leuchten bringt.
Der Teil ist erst im Kopf fertig und wird wohl morgen zusammen gesteckt.
PB1 kümmert sich um Änderungen bei Druck auf das Wählrad, PB2 und PB3 um Statusänderungen beim Drehen des Rades... Welches Rad fragt ihr? Wählrad RC Sender Spektrum DX- Serie... Und nu ist wohl auch klar, das ich nicht nur schnöde das Display beleuchten möchte, sondern das auch schön haben will
Code:
$regfile = "attiny13.dat"
$crystal = 4800000
'$prog &HFF , &H72 , &HFF , &H00 ' 9,6 MHz, Vorteiler aus
$prog &HFF , &H75 , &HFF , &H00 ' 4,8 MHz, Vorteiler aus
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1 'PWM im Schnellgang
Dim Z As Byte , T As Bit , L As Byte ' Z= Zähler P-Breite, T= dunkel/hell, PWM Startwert
Dim M As Bit , N As Bit , W As Byte , D As Byte ' Merker für Rollen Eingänge, Geschwindigkeit Dimmer, AN- Zeit
L = 8 : W = 10 : D = 10 ' Vorbelegen
Config Pinb.0 = Output ' PWM Ausgabe
Config Pinb.1 = Input ' INT0 Eingang (Klicktaste)
Config Pinb.2 = Input ' Eingang Rollen links
Config Pinb.3 = Input ' Eingang rollen rechts
Portb.1 = 1 ' Pullup einschalten
Portb.2 = 1 ' Pullup einschalten
Portb.3 = 1 ' Pullup einschalten
On Int0 Isr_display ' Sprungziel bei Auslöung
Config Int0 = Change ' Jeden Pegelwechsel nutzen
Enable Int0 ' INT0 einschalten
Gosub Isr_display ' Erstmal beim EInschalten Licht machen
Do ' Start Hauptschleife
While T = 1 ' Licht ist an, also Ausdimmen
Decr Z
Pwm0a = Z
If Z = L Then T = 0 ' Ende, wenn Startwert erreicht
Waitms W ' Geschindigkeit des Dimmens
Wend
If Pinb.2 = M Then ' Start Abfrage der Rollen- Eingänge
M = 1 : Gosub Isr_display ' und Sprung, wenn sich was geändert hat
End If
If Pinb.2 = M Then
M = 0 : Gosub Isr_display
End If
If Pinb.3 = N Then
N = 1 : Gosub Isr_display
End If
If Pinb.3 = N Then
N = 0 : Gosub Isr_display
End If ' Fertig mit der Auswertung
Loop
Isr_display: ' INT- und Sprungziel
Disable Int0 ' Erstmal für Ruhe sorgen
While T = 0
Incr Z
Pwm0a = Z
If Z = 128 Then T = 1 ' Bis 50% Puls/Pause hochzählen
Waitms W
Wend
Wait D ' Display für D Sekunden an lassen
Enable Int0 ' Ab jetzt wieder horchen
Return ' und zurück zum Hauptprogramm
End
Lesezeichen