Skocz do zawartości

Własny do line follower'a


soltys123

Pomocna odpowiedź

Siemka. Chciałbym, abyście powiedzieli mi, czy program, który napisałem może być użyty do budowy linie follower'a. Chciałbym dodać, że program, który napisałem jest moim pierwszym programem, więc mogą być niezliczone błędy 😃. Z góry dzięki za pomoc.

Pozdrawiam!

$regfile = "attiny2313.dat"                                 'procek
$crystal = 4000000                                          'Mhz


Config Portb = Input                                        'cały port b jako wejście
Config Portd = Output                                       'cały port d jako wyjście





Do                                                          'początek pętli startu


If Pinb.0 = 1 Then                                          'kiedy przycisk 1 jest wciśnięty
Wait 3                                                      'czekaj 3 sekundy
Pind.0 = 1                                                  'załączenie silnika nr.0
Pind.1 = 1                                                  'załączenie silnika nr.1
End If                                                      'koniec bloku warunkowego

Loop                                                        'koniec pętli startu


Do                                                          'początek pętli ruchu w przód


If Pinb.1 = 0 Then                                          'kiedy pinb 1 z fototranzystora nie widzi linii
Pind.0 = 1                                                  'załączenie silnika nr.0
Pind.1 = 1                                                  'załączenie silnika nr.1
If Pinb.2 = 1 Then                                          'kiedy pinb 2 z fototranzystora widzi linię
Pind.0 = 1                                                  'załączenie silnika nr.0
Pind.1 = 1                                                  'załączenie silnika nr.1
If Pinb.3 = 1 Then                                          'kiedy pinb 3 z fototranzystora widzi linię
Pind.0 = 1                                                  'załączenie silnika nr.0
Pind.1 = 1                                                  'załączenie silnika nr.1
If Pinb.4 = 0 Then                                          'kiedy pinb 4 z fototranzystora nie widzi linii
Pind.0 = 1                                                  'załączenie silnika nr.0
Pind.1 = 1                                                  'załączenie silnika nr.1
End If                                                      'koniec bloku warunkowego


Loop                                                        'koniec pętli ruchu w przód


Do                                                          'początek pętli skrętu w lewo


If Pinb.1 = 1 Then                                          'kiedy pinb 1 z fototranzystora widzi linię
Pind.1 = 1                                                  'załączenie silnika nr.0
If Pinb.2 = 1 Then                                          'kiedy pinb 2 z fototranzystora widzi linię
Pind.1 = 1                                                  'załączenie silnika nr.0
If Pinb.3 = 0 Then                                          'kiedy pinb 3 nie widzi linii
Pind.0 = 0                                                  'wyłączenie silnika nr.1
If Pinb.4 = 0 Then                                          'kiedy pinb 4 z fototranzystora nie widzi linii
Pind.0 = 0                                                  'wyłączenie silnika nr.1
End If                                                      'koniec bloku warunkowego


Loop                                                        'koniec pętli skrętu w lewo


Do                                                          'początek pętli skrętu w prawo


If Pinb.1 = 0 Then                                          'kiedy pinb 1 nie widzi linii
Pind.1 = 0                                                  'wyłączenie silnika nr.1
If Pinb.2 = 0 Then                                          'kiedy pinb 2 nie widzi linii
Pind.1 = 0                                                  'wyłączenie silnika nr.1
If Pinb.3 = 1 Then                                          'kiedy pinb 3 widzi linię
Pind.0 = 1                                                  'załączenie silnika nr.0
If Pind.4 = 1 Then                                          'kiedy pinb 4 widzi linię
Pinb.0 = 1                                                  'załączenie silnika nr.0
End If                                                      'koniec bloku warunkowego


Loop                                                        'koniec pętli skrętu w prawo


Do                                                          'początek pętli poszukiwania linii.


If Pinb.1 = 0 Then
Pind.1 = 1
If Pind.2 = 0 Then
Pind.1 = 1
If Pinb.3 = 0 Then
Pind.0 = 0
If Pinb.4 = 0 Then
Pind.0 = 0
End If                                                      'kobiec bloku warunkowego


Loop                                                        'koniec pętli poszukiwania linii


End

__________

Komentarz dodany przez: Sabre

Poprawiłem kod w poście.

Link do komentarza
Share on other sites

Chciałbym, abyście powiedzieli mi, czy program, który napisałem może być użyty do budowy linie follower'a.

Użyty być może jeśli się poprawnie skompiluje, w tej chwili program, który napisałeś nawet się nie kompiluje.

Link do komentarza
Share on other sites

Kiedy próbuję skompilować, to wyskakują mi 2 błędy:

➡️ Error: 7 line: 95 IF THEN expected [ 95]

➡️ Error: 123 line: 95 END IF expected

Może to pomoże 🙂.

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

Zacznij od tego jak działają pętle i jaka jest składania warunków (if) w Bascomie, bo tutaj zrobiłeś główne błędy.

Link do komentarza
Share on other sites

1 program był...lepiej nie mówić 🙂

A ten?

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

Config Portd = Input
Config Portb = Output

'początek nieskończonej pętli
Do

If Pind.1 = 1 And Pind.2 = 1 Then                          'kiedy środkowe czujniki widzą linię
 Pinb.0 = 1
 Pinb.1 = 1                                                'jedź do przodu


 If Pind.0 = 1 Then                                        'kiedy  lewy czujnik widzi linię
  Pinb.0 = 0
  Pinb.1 = 1                                               'skręć w lewo

  If Pind.3 = 1 Then                                       'kiedy prawy czujnik widzi linię
   Pinb.0 = 1
   Pinb.1 = 0                                              'skręć w prawo
   If Pind.0 = 0 And Pind.1 = 0 And Pind.2 = 0 And Pind.3 = 0 Then       'kiedy nic nie widzi linii
   Gosub Szukaj_linii
   End If
 End If
End If

Loop                                                       'koniec pętli

End                                                        'koniec programu

Szukaj_linii:                                              'podprogram szukania linii
Wait 3
Pinb.0 = 1
Pinb.1 = 0
Return

Z góry dzięki 🙂

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.