Witam
Zbudowałem sumo robota jednak mam problem z główną petlą która będzie nim sterować. Robot posiada jeden czujnik wykrycia białej lini (Sg2bc) oraz jeden czujnik wykrycia przecwinika (Sharp) Czujniki osobno gdy sa zaprogramowanie działają dobrze lecz nie umiem ich połączyć w jeden program by ze sobą współpracowały.
Zasada działania: Gdy załącze robota kręci się wkoło by znaleść przeciwnika , jeśli go znajdzie jedzię do przodu
jeśli nie znaleziono przeciwnika a wykryto biała linie ringu robot odbija w prawo by wrócić na ring a następnie wraca do poczatku petli by dalej szukać przeciwnika -> możliwość gdy robot będzie wypychany przez przecwinika z ringu
Załączam próbny kod programu który nie działa
kod:
Zbudowałem sumo robota jednak mam problem z główną petlą która będzie nim sterować. Robot posiada jeden czujnik wykrycia białej lini (Sg2bc) oraz jeden czujnik wykrycia przecwinika (Sharp) Czujniki osobno gdy sa zaprogramowanie działają dobrze lecz nie umiem ich połączyć w jeden program by ze sobą współpracowały.
Zasada działania: Gdy załącze robota kręci się wkoło by znaleść przeciwnika , jeśli go znajdzie jedzię do przodu
jeśli nie znaleziono przeciwnika a wykryto biała linie ringu robot odbija w prawo by wrócić na ring a następnie wraca do poczatku petli by dalej szukać przeciwnika -> możliwość gdy robot będzie wypychany przez przecwinika z ringu
Załączam próbny kod programu który nie działa
kod:
$regfile = "M8def.dat" ' use the Mega8
$crystal = 10000000
Config Portc = 0110000
Portc = 0110000
Config Pind.0 = Output
Config Pind.1 = Output
Config Pind.2 = Output
Config Pind.3 = Output
Pind.0 = 1 ' silniki nie dzialaja
Pind.1 = 1
Pind.2 = 1
Pind.3 = 1 ' silniki nie dzialaja
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
Start Adc
Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Y As Byte , O As Byte
Config Aci = On , Compare = Off , Trigger = Falling
Do
W = Getadc(2) ' sprawdzanie czujnika przeciwnika
Volt = W * 5
Volt_d = Volt Mod 10
Volt = Volt / 1000
If Volt > 0 Then ' jesli wykryjesz przeciwnika
' zapal diode ZOLTA
Portc = 0100000
' jedz na przod
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1
Portd.3 = 0
Else ' jesli nie znalazles przeciwnika
Portc = 0000000
Portd.0 = 0 ' krec sie w kolo szukaj przeciwnika
Portd.1 = 1
Portd.2 = 0
Portd.3 = 1
Elseif Volt < 0 And Acsr.5 = 0 Then ' Jesli nie znalazles przeciwnika a wykryles biala linie
Portc = &B0000000 ' Zapal diode czerwona
' odbij w prawo by wrocic na ring
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1
Portd.3 = 0
' nastepnie wroc do poczatku petli
Loop
End
' ZOlta zapalona znaleziono przeciwnika
' czerwona zapalona najechano na biala linie