Skocz do zawartości

Omijanie przeszkód - problem z programem


bluehais

Pomocna odpowiedź

Witam

Mój robot ma po prostu omijać przeszkody .. ale pojawia się problem. Na jaką wartość w programie ustawić granicę reagowania?

z góry dziękuję za odpowiedź

Program:

$regfile = "m8def.dat"
$crystal = 1000000

Config Adc = Single , Prescaler = Auto
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Config Portd = Output
Config Portb = Output

Silnik_lewy_a Alias Portd.3
Silnik_lewy_b Alias Portd.2
Silnik_prawy_b Alias Portd.0
Silnik_prawy_a Alias Portd.1
Dioda Alias Portd.6

Const Granica = 500

Dim Czujnik_prawy As Single
Dim Czujnik_lewy As Single
Dim W As Word

Set Dioda
Reset Silnik_lewy_a
Reset Silnik_lewy_b
Reset Silnik_prawy_a
Reset Silnik_prawy_b

Do
Gosub Wczytaj_stany

If Czujnik_prawy < Granica Then
Silnik_lewy_b = 1
Pwm1a = 255
Elseif Czujnik_lewy < Granica Then
Silnik_lewy_b = 0
Silnik_prawy_b = 1
Pwm1a = 0
Pwm1b = 255
Else
Silnik_lewy_a = 1
Silnik_lewy_b = 0
Silnik_prawy_a = 1
Silnik_prawy_b = 0
Pwm1a = 255
Pwm1b = 255
End If

Loop

End

Wczytaj_stany:
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_lewy = W
Start Adc
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_prawy = W
Return

a oto schemat:

__________

Komentarz dodany przez: Treker

Link do komentarza
Share on other sites

Wartość tej granicy najlepiej dobrać sobie doświadczalnie, przecież wiesz przy jakiej odległości od przeszkody robot ma zacząć reagować? Wybierz taką, jaka będzie dla Ciebie wystarczająca...

Link do komentarza
Share on other sites

Napisałem pytanie by nie musieć 2 razy programować procka 😃 tak , to był schemat linefollowera, ale przerobiłem go trochę. Gdy zadziała lewy czujnik czyli robot będzie bliżej przeszkody z lewej strony załącza silnik prawy by jechał do tyłu i analogicznie z prawym czujnikiem. Tylko jeszcze brakuje biegu wstecznego gdy oba czujniki zadziałają jednocześnie 😳

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

If Czujnik_prawy < Granica  & Czujnik_lewy < Granica Then

Tu masz warunek do wstecznego

Błędny warunek, bascom wyświetla błąd, poprawny jest taki:

If Czujnik_prawy < Granica And Czujnik_lewy < Granica Then

ehh...

Wczytaj_stany: 
Start Adc 
W = Getadc(5) 
W = Getadc(5) 
Stop Adc 
Czujnik_lewy = W 
Start Adc 
W = Getadc(3) 
W = Getadc(3) 
Stop Adc 
Czujnik_prawy = W 
Return 

chyba też źle powinno być o ile się nie mylę:

Wczytaj_stany: 
Start Adc 
W = Getadc(5) 
Stop Adc 
Czujnik_lewy = W 
Start Adc 
W = Getadc(3)  
Stop Adc 
Czujnik_prawy = W 
Return 

Człowiek uczy się na błędach 🙄

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.