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