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
End

Besturing

'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%)]