Skocz do zawartości

LineFollower kąt prosty


Szuszy

Pomocna odpowiedź

$regfile = "m8def.dat"                                      ' Typ procesora ( ATMEGA 8 )
$crystal = 1000000                                          'Taktowanie procesora ( 1Mhz )

Config Portc = Output
Config Portd = Input

Portc = &B0000000
Portd = &B00000000

Dim Zmienna As Byte
Motor_lp Alias Portc.0
Motor_lt Alias Portc.1
Motor_pp Alias Portc.2
Motor_pt Alias Portc.3
Sensor_prawy Alias Pind.0
Sensor_srodkowy Alias Pind.1
Sensor_lewy Alias Pind.2


Do
  If Sensor_lewy = 0 And Sensor_srodkowy = 1 And Sensor_prawy = 0 Then       'go along
     Gosub Go

   Elseif Sensor_lewy = 0 And Sensor_srodkowy = 1 And Sensor_prawy = 1 Then       'turn left
     Zmienna = 0
     Gosub Lewt

   Elseif Sensor_lewy = 0 And Sensor_srodkowy = 0 And Sensor_prawy = 1 Then       'turn left
     Gosub Lewt


   Elseif Sensor_lewy = 1 And Sensor_srodkowy = 1 And Sensor_prawy = 0 Then       'turn right
     Zmienna = 1
     Gosub Righ

   Elseif Sensor_lewy = 1 And Sensor_srodkowy = 0 And Sensor_prawy = 0 Then       'turn right
     Gosub Righ

    Elseif Sensor_lewy = 0 And Sensor_srodkowy = 0 And Sensor_prawy = 0 Then
     If Zmienna = 1 Then
     Gosub Righ
     Else
     Gosub Lewt
     End If


  End If
Loop


Go:
Motor_lt = 1
Motor_pt = 1
Return
Lewt:
Motor_lt = 0
Motor_pt = 1

Return
Righ:
Motor_lt = 1
Motor_pt = 0

Return

Brakowało jednego end if i definicji zmiennej 😉

  • Lubię! 1
Link do komentarza
Share on other sites

Wiem, że trochę odkopane, ale nie chciałem zakładać nowego tematu. Mam PID'a w linefollowerze sterowanym przez arduino. Nie wiem co dopisać, żeby po zgubieniu linii wykonał ostatnią czynność. Na BASCOMIE się nie znam i nie wiem jak przekształcić to z poprzednich stron. Wiem jak to ma działać ale nie wiem jak to dopisać do kodu. Pomoże ktoś?🙂

Link do komentarza
Share on other sites

W dużym skrócie: musisz jakoś zapamiętać ostatnią pozycję, np w jakiejś zmiennej. Jeśli nie wykryjesz linii, to sprawdzasz tą zmienną i wiesz z której strony ostatnio była linia, czyli z której strony ją zgubiłeś. Wiedząc to przypisujesz dla tego stanu jakąś pozycję (np. taką samą jak waga dla skrajnego czujnika ze strony, po której zgubiłeś linię), dzięki czemu skręcisz w odpowiednią stronę.

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

Wiem jak to ma działać, ale nie moge tego napisać🙂 Jak zapamiętać ostatnią pozycję w której jeszcze widzi linię? Bo jeśli zrobić tak jak algorytm liczy D, czyli: D=P-last_P, gdzie last_P=P to on zapamięta ostatnią pozycje, a nie ostatnią jeszcze nad linią. Przynajmniej tak mi się wydaje.

Link do komentarza
Share on other sites

matty, logiczne myślenie widzę siada z roku na rok. Wystarczy dodać sprawdzanie czy to co widzą czujniki jest równe przyjętemu 0, czyli sytuacji gdy żaden z czujników nie widzi linii. Zapamiętywanie poprzedniego stanu robi się w warunku, że dopóki widzi którykolwiek z czujników linię to bieżący stan jest zapamiętywany do jakiejś zmiennej.

Czyli:

jeśli stan czujników jest różny od 00000000 (na 8 czujnikach nie ma linii) to

stan bieżący jest zapisywany do stanu poprzedniego

koniec warunku

Wtedy gdy lfr wyjedzie poza linię to nie nadpisuje ostatniego stanu czujników gdy jeszcze był na linii, więc masz zapamiętaną w zmiennej ostatnią pozycję nad linią.

Link do komentarza
Share on other sites

jeśli stan czujników jest różny od 00000000 (na 8 czujnikach nie ma linii) to

stan bieżący jest zapisywany do stanu poprzedniego

Niby oczywiste, a dopiero ta wypowiedź mnie oświeciła:) Zrobiłem, działa, dzięki za pomoc 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.