Dit topic wordt voordurend gewijzigd, gelieve nog niets te reageren.
Elektroman046
Lichten
'Configureren van de inputs/outputs
Config Portd = Input
Config Portb = Output
'Betere namen voor in- en uitgangen
Lights Alias Portb.0
Breakelight Alias Portb.3
Indicatorleft Alias Portb.6
Indicatorright Alias Portb.7
'Dimensioneren van de variabelen van de lichten
Dim Btnlights As Bit
Dim Btnindicatorleft As Bit
Dim Btnindicatorright As Bit
Dim Btndubbleindicator As Bit
'Dimensioneren van de variabelen van de counters
Dim Indicatorcounter1 As Byte , Indicatorleft2 As Bit
Dim Indicatorcounter2 As Byte , Indicatorright2 As Bit
Dim Indicatorcounter3 As Byte , Dubbleindicator As Bit
'Dimensioneren van de variabelen voor de seriele
'communicatie
Dim A As String * 1
Do
'Hiermee gaan we de ascii-code van de toets van
'het toetsenbord in de variabelen A plaatsen.
A = Inkey()
If A <> "" Then
Print A
'Select case om de ingelezen toets een 1 of 0
' toe te kennen aan de variabelen
Select Case A
Case "V" : Btnlights = 0
Case "v" : Btnlights = 1
Case "L" : Btnindicatorleft = 0
Case "l" : Btnindicatorleft = 1
Case "R" : Btnindicatorright = 0
Case "r" : Btnindicatorright = 1
Case "G" : Btndubbleindicator = 0
Case "g" : Btndubbleindicator = 1
End Select
End If
'Voorlichten en achterlichten aansturen
If Btnlights = 1 Then
Set Lights
Else
Reset Lights
End If
'Pinker links aansturen: We gaan de pinker 5 lussen
' ON sturen, daarna 5 lussen OFF,
' na de 10de lus wordt de COUNTER gereset.
'Dit vormt 1 AAN-UIT signaal van de pinker.
If Btnindicatorleft = 1 Then
Indicatorcounter1 = Indicatorcounter1 + 1
If Indicatorcounter1 < 5 Then
Set Indicatorleft
Elseif Indicatorcounter1 > 5 Then
Reset Indicatorleft
End If
If Indicatorcounter1 = 10 Then
Indicatorcounter1 = 0
End If
Else
Indicatorleft = 0
End If
'Pinker rechts aansturen: We gaan de pinker 5 lussen
' ON sturen, daarna 5 lussen OFF,
' na de 10de lus wordt de COUNTER gereset.
'Dit vormt 1 AAN-UIT signaal van de pinker.
If Btnindicatorright = 1 Then
Indicatorcounter2 = Indicatorcounter2 + 1
If Indicatorcounter2 < 5 Then
Set Indicatorright
Elseif Indicatorcounter2 > 5 Then
Reset Indicatorright
End If
If Indicatorcounter2 = 10 Then
Indicatorcounter2 = 0
End If
Else
Indicatorright = 0
End If
'Vierpinkers: Hierbij passen we de zelfde theorie
' toe als de pinker Links en Rechts,
' alleen sturen we de 2 pinkers tegelijk aan
'in plaats van apart.
If Btndubbleindicator = 1 Then
Indicatorcounter3 = Indicatorcounter3 + 1
If Indicatorcounter3 < 5 Then
Set Indicatorleft
Set Indicatorright
Elseif Indicatorcounter3 > 5 Then
Reset Indicatorleft
Reset Indicatorright
End If
If Indicatorcounter3 = 10 Then
Indicatorcounter3 = 0
End If
Else
Indicatorleft = 0
Indicatorright = 0
End If
Loop
End
Aandrijving
'Configureren van de inputs/outputs
Config Portd = Input
Config Portb = Output
'Betere namen voor in- en uitgangen
Breakelight Alias Portb.3
Input1motoric Alias Portb.4
Input2motoric Alias Portb.5
Detection alias PIND.1
'Dimensioneren van de variabelen van de aandrijving
Dim Ride As Byte
'Dimensioneren van de variabelen voor de seriele
'communicatie
Dim A As String * 1
Do
'Hiermee gaan we de ascii-code van de toets van
'het toetsenbord in de variabelen A plaatsen.
A = Inkey()
If A <> "" Then
Print A
'Select case om de ingelezen toets een 1 of 0
' toe te kennen aan de variabelen
Select Case A
Case "8" : Ride = 2
Case "2" : Ride = 1
Case "5" : Ride = 0
End Select
End If
'Aandrijving van de auto met
'detectie (ultrasoon sensor)
'Hiermee gaan we voorruit rijden,
'de remlichten gaan uit
If Ride = 2 And Detection = 0 Then
Input1motoric = 1
Input2motoric = 0
Breakelight = 0
'Hiermee gaan we achteruit rijden,
'de remlichten gaan uit
Elseif Ride = 1 Then
Input1motoric = 0
Input2motoric = 1
Breakelight = 0
'de driver-ic staat in brake-function
''(remmen / Stoppen) , De Remlichten
'Gaan Aan
Elseif Ride = 0 Or Detection = 1 Then
Input1motoric = 1
Input2motoric = 1
Breakelight = 1
End If
Loop
EndBesturing
'Configureren van de inputs/outputs
Config Portd = Input
Config Portb = Output
'Betere namen voor in- en uitgangen
Turnright Alias Portb.1
Turnleft Alias Portb.2
'Dimensioneren van de variabelen van de aandrijving
Dim Lefton As Bit
Dim Righton As Bit
'Dimensioneren van de variabelen voor de seriele
'communicatie
Dim A As String * 1
Do
'Hiermee gaan we de ascii-code van de toets van
'het toetsenbord in de variabelen A plaatsen.
A = Inkey()
If A <> "" Then
Print A
'Select case om de ingelezen toets een 1 of 0
' toe te kennen aan de variabelen
Select Case A
Case "4" : Lefton = 1
Case "6" : Righton = 1
End Select
End If
'Besturing van de auto, als er gedrukt
'wordt zullen de banden een klein stukje opschuiven
'Hier gaan we naar rechts
If Righton = 1 Then
Turnright = 1
Turnleft = 0
Waitms 200
Turnright = 0
Turnleft = 0
Righton = 0
'Hier gaan we naar links
Elseif Lefton = 1 Then
Turnright = 0
Turnleft = 1
Waitms 200
Turnright = 0
Turnleft = 0
Lefton = 0
End If
Loop
End'FSMverkeerslicht
'----------------
'Author : W. Geerts
'$regfile = "m16def.dat"
Config Portb = Output
Config Portd = Input
'Timer
Config Timer1 = Timer , Prescale = 1024
Const Timer1sec = 65536 - 4000
Const Timer2sec = 65536 - 8000
Const Timer3sec = 65536 - 12000
Const Timer4sec = 65536 - 16000
Timer1 = Timer1sec
On Timer1 Timer_1_int
Enable Timer1
Enable Interrupts
Stop Timer1
'Dimensioneren
Dim Toestand As String * 12
Dim Oversteken As Integer
Dim Zijstraat As Integer
Hsgroen Alias Portb.0
Hsoranje Alias Portb.1
Hsrood Alias Portb.2
Zsgroen Alias Portb.3
Zsoranje Alias Portb.4
Zsrood Alias Portb.5
Ovgroen Alias Portb.6
Ovrood Alias Portb.7
'Begintoestand
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
Toestand = "Wait"
Toestand = "HS"
Toestand = "HStoZS"
Toestand = "Stop1"
Toestand = "Oversteken"
Toestand = "Stop"
Toestand = "ZS"
Toestand = "ZStoHS"
Toestand = "Stop2"
Toestand = "Oversteken2"
Toestand = "HS"
Start Timer1
Do
Select Case Toestand
Case "HS" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 1
Hsoranje = 0
Hsrood = 0
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
If Pind.3 = 0 Then
Wait 3
Oversteken = 1
Toestand = "HStoZS"
Timer1 = Timer2sec
Elseif Pind.2 = 0 Then
Wait 3
Zijstraat = 1
Toestand = "HStoZS"
Timer1 = Timer2sec
End If
Case "HStoZS" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 1
Hsrood = 0
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
Case "Stop1" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
Case "Oversteken" :
Ovgroen = 1
Ovrood = 0
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
Case "Stop" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
Case "ZS" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 1
Zsoranje = 0
Zsrood = 0
If Pind.3 = 0 Then
Oversteken = 1
Toestand = "ZStoHS"
Timer1 = Timer2sec
End If
Case "ZStoHS" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 1
Zsrood = 0
Case "Stop2" :
Ovgroen = 0
Ovrood = 1
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
Case "Oversteken2" :
Ovgroen = 1
Ovrood = 0
Hsgroen = 0
Hsoranje = 0
Hsrood = 1
Zsgroen = 0
Zsoranje = 0
Zsrood = 1
End Select
Loop
End
Timer_1_int:
Select Case Toestand
Case "HStoZS" :
Timer1 = Timer2sec
Toestand = "Stop1"
Case "Stop1" :
Timer1 = Timer3sec
If Oversteken = 1 Then
Oversteken = 0
Toestand = "Oversteken"
Elseif Zijstraat = 1 Then
Zijstraat = 0
Toestand = "ZS"
End If
Case "ZS" :
Timer1 = Timer2sec
Toestand = "ZStoHS"
Case "Oversteken" :
Timer1 = Timer2sec
Toestand = "Stop"
Case "Stop"
Timer1 = Timer1sec
Toestand = "HS"
Case "ZStoHS" :
Timer1 = Timer2sec
Toestand = "Stop2"
Case "Stop2" :
Timer1 = Timer2sec
If Oversteken = 1 Then
Toestand = "Oversteken2"
Else
Toestand = "HS"
End If
Case "Oversteken2":
Timer1 = Timer2sec
Toestand = "Stop"
Case "Stop"
Timer1 = Timer1sec
Toestand = "HS"
End Select
Return[Bericht gewijzigd door Elektroman046 op (28%)]