Code:
'Stallsteuerung die Erste
'Getriebemotor an L293 Modul
'Endschalter als Reedkontackte ausgeführt
'LCD 1602
$regfile = "m32def.dat"
$crystal = 12000000
Dim A As Byte
Dim B 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 an PD4
Hintergrundbeleuchtung Alias Portd.4
Config Portd.4 = Output
'Motor 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
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.5 , Rs = Portd.7
Config Lcd = 16x2
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"
Wait 4
Cls
Do
Einsprung1:
Waitms 500
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
If Endschalter_u = 0 Then
Locate 1 , 1
Lcd "Klappe"
Locate 2 , 1
Lcd "geschlossen"
Locate 2 , 15
Lcd Chr(255)
End If
If Endschalter_o = 0 Then
Locate 1 , 1
Lcd "Klappe"
Locate 2 , 1
Lcd "offen "
Locate 2 , 15
Lcd Chr(1)
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:
Locate 2 , 1
Lcd Chr(239)
Lcd "ffnet "
Led = 1
Motor_ein = 1
Waitms 500
If Taster = 0 Then Goto Einsprung2
If Endschalter_o = 0 Then Goto Einsprung2
Select Case B
Case 2 : Gosub Klappe1
Case 3 : Gosub Klappe2
Case 4 : Gosub Klappe3
Case 5 : Gosub Klappe4
Case 6 : Gosub Klappe5
Case 7 : Gosub Klappe6
Case 8 : Gosub Klappe7
Case 9 : Gosub Klappe8
End Select
If B < 2 Then B = 10
B = B - 1
Goto Hoch
Runter:
Locate 2 , 1
Lcd "schlie"
Lcd Chr(226)
Lcd "t "
Led = 1
Motor_ein = 1
Waitms 500
If Taster = 0 Then Goto Einsprung2
If Endschalter_u = 0 Then Goto Nachlauf1
Select Case B
Case 1 : Gosub Klappe1
Case 2 : Gosub Klappe2
Case 3 : Gosub Klappe3
Case 4 : Gosub Klappe4
Case 5 : Gosub Klappe5
Case 6 : Gosub Klappe6
Case 7 : Gosub Klappe7
Case 8 : Gosub Klappe8
End Select
B = B + 1
If B > 8 Then B = 1
Goto Runter
Fahren:
If Motor_richtung = 1 Then
Goto Runter
Else
Goto Hoch
End If
Nachlauf1:
Waitms 2500
Goto Einsprung2
Klappe1:
Locate 2 , 15
Lcd Chr(1)
Return
Klappe2:
Locate 2 , 15
Lcd Chr(2)
Return
Klappe3:
Locate 2 , 15
Lcd Chr(3)
Return
Klappe4:
Locate 2 , 15
Lcd Chr(4)
Return
Klappe5:
Locate 2 , 15
Lcd Chr(5)
Return
Klappe6:
Locate 2 , 15
Lcd Chr(6)
Return
Klappe7:
Locate 2 , 15
Lcd Chr(7)
Return
Klappe8:
Locate 2 , 15
Lcd Chr(255)
Return
End
Lesezeichen