Archiv verlassen und diese Seite im Standarddesign anzeigen : LED Dimmen per Software | Problem
Ich möchte gerne 1 LED per Software dimmen. Per Hardware ist nicht möglich weil die Ports schon belegt sind.
Ich wollte das ganze mit einen Timer machen.
So weit bin ich schon gekommen:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Portc.7 = Output
led Alias Portc.7
'#####Timer############
Config Timer1 = Timer , Prescale = 8
On Timer1 Int_timer1
Const Timervorgabe = 47104 ' 100 Hz
Enable Timer1
Enable Interrupts
Timer1 = Timervorgabe
Do
Loop
Int_timer1:
Timer1 = Timervorgabe
Toggle led
Return
End
Wie muss ich den Code so erweitern das die LED dynamisch von hell zu dunkel und umgekehrt leuchtet?
Ich würde mich freuen wenn mir einer weiter helfen kann.
Hallo,
probier es mal so:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Portc.7 = Output
led Alias Portc.7
'#####Timer############
Config Timer1 = Timer , Prescale = 8
On Timer1 Int_timer1
Const Timervorgabe = 65352 ' ~10 KHz
Dim Schwellwert As Byte, Level As Byte, Offset As Byte
Schwellwert=0
Offset=1
Enable Timer1
Enable Interrupts
Timer1 = Timervorgabe
Do
Loop
Int_timer1:
Timer1 = Timervorgabe
Incr Level
If Level=0 Then 'Level läuft etwa 40 mal je Sekunde über, dann wird Schwellwert angepasst
Schwellwert=Schwellwert+Offset
If Schwellwert=255 Then Offset=-1
If Schwellwert=0 Then Offset=1
Endif
If Level>Schwellwert Then
Set Led
Else
Reset Led
Endif
Return
End
Weder compiliert noch getestet.
Sollte in etwa 6 Sekunden von ganz hell nach aus wechseln und umgekehrt.
Gruß
Rolf
Danke für die schnelle Antwort.
Ich habe es gleich getestet, es funktioniert auch so weit nur leider flackert die Lampe stark. Kann man das noch irgendwie unterbinden?
//EDIT
Hab jetzt einfach mal die Timervorgabe auf 65522 gestellt jetzt flackert die LED nicht mehr.
Kann man jetzt noch einstellen das die LED nicht so schnell gedimmt wird? Also das ein Durchlauf ungefähr 30sek dauert?
Kann man das Programm so erweitern das man eine Variable definiert kann zwischen 0% und 100% und dadurch die LED so gedimmt wird?
//EDIT
Ich habe es jetzt so gemacht, ich hoffe das dies nicht so sehr das Hauptprogramm beeinflusst.
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Portc.7 = Output
Config Timer1 = Timer , Prescale = 1
Enable Timer1
On Timer1 Timer1_int
Enable Interrupts
Timer1 = 65530
Dim Zaehler As Byte '<- wichtig, dass es byte ist
Dim Trigger As Byte
Dim Taste As Byte
Trigger = 0
Do
Taste = Inkey()
If Taste > 0 Then
Select Case Taste
Case 43 'Das ist der ASCII Code für Taste +
Trigger = Trigger + 1
Print Trigger
Case 45 'Das ist der ASCII Code für Taste -
Trigger = Trigger - 1
Print Trigger
End Select
End If
Loop
Timer1_int:
Timer1 = 65530
If Zaehler > Trigger Then
Set Portc.7
Else
Reset Portc.7
End If
Zaehler = Zaehler + 1
Return
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.