Code:
'Stallsteuerung die Erste
'Getriebemotor an L293 Modul
'Endschalter als Reedkontackte ausgeführt
$regfile = "m32def.dat"
$crystal = 12000000
Dim A As Byte
'Taster an PB1
Taster Alias Pinb.1
Config Taster = Input
Portb.1 = 1 'PullUp-Widerstand einschalten
'Endschalter Unten an PC2
Endschalter_u Alias Pinc.2
Config Endschalter_u = Input
Portc.2 = 1 'PullUp-Widerstand einschalten
'Endschalter Oben an PC1
Endschalter_o Alias Pinc.1
Config Endschalter_u = Input
Portc.1 = 1 'PullUp-Widerstand einschalten
'Hintergrundbeleuchtung LCD an PD4
Hintergrundbeleuchtung Alias Portd.4
Config Portd.4 = Output
'Motor_ein an PC3
Motor_ein Alias Portc.3
Config Portc.3 = Output
'Motor Richtung an PC4 / low ist hoch - high ist runter
Motor_richtung Alias Portc.4
Config Portc.4 = Output
Led Alias Portb.0
Config Portb.0 = Output
'ADC Konfigurieren - wird später gebraucht um ein Lichtsensor auszuwerten
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
'LCD Konfigurieren und Zeichen definieren
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.7
Config Lcd = 16x2
'selber entworfene Zeichen für später
Deflcdchar 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 17
Deflcdchar 2 , 31 , 31 , 17 , 17 , 17 , 17 , 17 , 17
Deflcdchar 3 , 31 , 31 , 31 , 17 , 17 , 17 , 17 , 17
Deflcdchar 4 , 31 , 31 , 31 , 31 , 17 , 17 , 17 , 17
Deflcdchar 5 , 31 , 31 , 31 , 31 , 31 , 17 , 17 , 17
Deflcdchar 6 , 31 , 31 , 31 , 31 , 31 , 31 , 17 , 17
Deflcdchar 7 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 17
'Lcd Chr(255)
Cls
Cursor Off
Hintergrundbeleuchtung = 1
Lcd "Stallsteuerung"
Locate 2 , 1
Lcd "Vers. 0.1"
Do
Einsprung1:
Waitms 500
'Hier muß man umdenken, durch die im Kontroller aktivierten Pullup Widerstände, ist ein nicht 1 sondern 0
'gleiches gilt auch für die Endschalter
If Taster = 0 Then Goto Klappe_fahren
'
Led = 1
A = A + 1
If A >= 2 Then Led = 0
If A >= 10 Then
A = 0
End If
Loop
Klappe_fahren:
If Endschalter_u = 0 Then
Motor_richtung = 0
Goto Hoch
End If
If Endschalter_o = 0 Then
Motor_richtung = 1
Goto Runter
End If
Goto Fahren
Einsprung2:
Toggle Motor_richtung
Led = 0
Motor_ein = 0
Goto Einsprung1
Hoch:
Led = 1
Motor_ein = 1
Waitms 500
If Taster = 0 Then Goto Einsprung2
If Endschalter_o = 0 Then Goto Einsprung2
Goto Hoch
Runter:
Led = 1
Motor_ein = 1
Waitms 500
If Taster = 0 Then Goto Einsprung2
If Endschalter_u = 0 Then Goto Nachlauf1
Goto Runter
Fahren:
Led = 1
Motor_ein = 1
Waitms 500
If Taster = 0 Then Goto Einsprung2
If Endschalter_u = 0 Then Goto Nachlauf1
If Endschalter_o = 0 Then Goto Einsprung2
Goto Fahren
'der Nachlauf dient zum genauen justieren des Schließens (falls der Reedkontackt nicht so ganz perfekt sitzt)
Nachlauf1:
Waitms 2500
Goto Einsprung2
End
Was macht das Programm genau:
Lesezeichen