Dit is een projectje dat ik een paar jaar geleden in school voor een projectweek samen met 2 klasgenoten heb gebouwd .
De plastic onderdelen en de printplaten (bouwkit) zijn aangekocht. Onze opdracht was de printplaten solderen en het programma schrijven.
In normale werking loopt de hexavoider rechtdoor. Dit gebeurt door de linkse kant omhoog te halen. Rechts wordt dan naar voor gedaan en links wordt naar achter gedaan. Dan wordt de andere kant omhoog gedaan. Links wordt dan naar voor gedaan en rechts naar achter. Zo stapt hij vooruit.
De HexAvioder heeft 2 soorten detectoren: de voelsprieten en de IR sensoren. Als de voelsprieten worden bediend gaat deze eerst achteruit en vervolgens draait hij naar de andere kant als van waar hij detecteerde. Hetzelfde is als de IR-sensoren iets detecteren. Eerst achteruit en dan draaien, dit is wel in een vaste richting aangezien we maar 1 IR-ontvanger hebben.

Filmpje van de HexAvoider in actie:
Code (Bascom):
'*************************************************
'* HexAvoider *
'* Stijn Coenen, Rob Thomas, Stijn van Roy *
'* 3ELO2 *
'*************************************************
$regfile = "89C51RC.dat"
'Kristal = 11Mhz
$crystal = 11059200
'*************************************************
'In en uitgangen aanduiden
Config Servos = 3 , Servo1 = P1.5 , Servo2 = P1.6 , Servo3 = P1.7 , Reload = 100
Led1 Alias P0.0
Led2 Alias P0.1
Led3 Alias P0.2
Led4 Alias P0.3
Buzzer Alias P0.5
Switch1 Alias P0.4
Switch2 Alias P0.5
Links_antenne Alias P3.2
Recht_antenne Alias P3.3
Led_antenne Alias T0
Irled_left Alias P1.0
Irled_right Alias P1.1
Irin Alias P1.2
Led_left Alias P1.3
Led_right Alias P1.4
Dim index As Byte
'*************************************************
'Subroutines
'Subroutines skippen bij opstarten programma
GoTo Oversub
'*************************************************
'Ir leds laten knipperen
Ir_led_sturen:
For index = 0 To 100
Irled_left = 1
Irled_right = 1
delay
Irled_left = 0
Irled_right = 0
Delay
Next
Return
'*************************************************
'Als er links gedetecteerd is
Links_detect:
Led1 = 0
GoSub Servo_mid
GoSub Achteruit
GoSub Achteruit
Waitms 2000
GoSub Servo_mid
GoSub Rechts_draai
GoSub Rechts_draai
Led1 = 1
Return
'*************************************************
'Als er rechts gedetecteerd is
Rechts_detect:
Led2 = 0
GoSub Servo_mid
GoSub Achteruit
GoSub Achteruit
Waitms 2000
GoSub Servo_mid
GoSub Links_draai
GoSub Links_draai
Led2 = 1
Return
'*************************************************
'Alle servo's in de middenstand zetten
Servo_mid:
Servo1 = 12
Servo2 = 12
Servo3 = 12
Return
'************************************************* 'Achteruit lopen
Achteruit:
'links omhoog
Servo2 = 16
Waitms 350
'links naar achter
Servo3 = 8
Waitms 350
'links naar voor
Servo1 = 8
Waitms 350
' rechts omhoog
Servo2 = 8
Waitms 350
'rechts naar achter
Servo1 = 16
Waitms 350
'links naar voor
Servo3 = 16
Waitms 350
Return
'*************************************************
'Naar rechts draaien
Rechts_draai:
'links omhoog
Servo2 = 16
Waitms 350
'links naar voor
Servo3 = 14
Waitms 350
'rechts naar voor
Servo1 = 8
Waitms 350
'rechts omhoog
Servo2 = 8
Waitms 350
'rechts naar achter
Servo1 = 14
Waitms 350
'links naar achter
Servo3 = 8
Waitms 350
Return
'*************************************************
'Naar links draaien
Links_draai:
'links omhoog
Servo2 = 16
Waitms 350
'links naar achter
Servo3 = 8
Waitms 350
'rechts naar voor
Servo1 = 14
Waitms 350
'rechts omhoog
Servo2 = 8
Waitms 350
'rechts naar voor
Servo1 = 8
Waitms 350
'links naar voor
Servo3 = 14
Waitms 350
Return
'*************************************************
'Sensoren checken
Sensor_check:
'Linkse antenne
If Links_antenne = 0 Then
GoSub Links_detect
End If
'Rechtse antenne
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
'IR-Leds
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
Return
Oversub:
'*************************************************
'Servo's in de middenstand zetten
GoSub Servo_mid
Do
'rechts omhoog
Servo2 = 8
Waitms 350
If Links_antenne = 0 Then
GoSub Links_detect
End If
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
'Links naar achter
Servo3 = 10
Waitms 350
If Links_antenne = 0 Then
GoSub Links_detect
End If
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
'Rechts voor
Servo1 = 8
Waitms 350
If Links_antenne = 0 Then
GoSub Links_detect
End If
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
'links omhoog
Servo2 = 16
Waitms 350
If Links_antenne = 0 Then
GoSub Links_detect
End If
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
'rechts naar achter
Servo1 = 15
Waitms 350
If Links_antenne = 0 Then
GoSub Links_detect
End If
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
'Links Naar Voor
Servo3 = 14
Waitms 350
If Links_antenne = 0 Then
GoSub Links_detect
End If
If Recht_antenne = 0 Then
GoSub Rechts_detect
End If
GoSub Ir_led_sturen
If Irin = 0 Then
GoSub Rechts_detect
End If
Loop
'*************************************************
End
Bestanden:
Code: Download
