Skocz do zawartości

Pierwsze uruchomienie linefollower z programem


Patryk614

Pomocna odpowiedź

Witam, poprawiłem i uruchomiłem ale nie działa, widzicie jakieś błędy? 🙂😉

$regfile = "m88def.dat"
$crystal = 16000000

'Konfiguracja portów
Config Portb = Output
Config Portd = &B01111111
Config Portc = Input

Portd.7 = 1

Przycisk Alias Pind.7
    Led Alias Portd.6
Enable_a Alias Portb.1
Enable_b Alias Portb.2
Silnik_prawy_a Alias Portd.3
Silnik_prawy_b Alias Portd.2
Silnik_lewy_a Alias Portd.1
Silnik_lewy_b Alias Portd.0

Set Led

Do
Bitwait Pind.7 , Reset                                      'czekaj aż 7 linia portu D będzie w stanie 0.
'Obrót w jedną stronę
Set Silnik_prawy_a
Reset Silnik_prawy_b
Wait 1
'Obrót w stronę przeciwną
Reset Silnik_prawy_a
Set Silnik_prawy_b
Wait 1
'Stop
Reset Silnik_prawy_a
Reset Silnik_prawy_b
Wait 1
'Obrót w jedną stronę
Set Silnik_lewy_a
Reset Silnik_lewy_b
Wait 1
'Obrót w stronę przeciwną
Reset Silnik_lewy_a
Set Silnik_lewy_b
Wait 1
'Stop
Reset Silnik_lewy_a
Reset Silnik_lewy_b
Wait 1
Loop

End
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

Witam, napisałem nieco inaczej program i mostek działa. Silniki jadą najpierw prosto, póżniej w tył a potem w lewo i prawo. Więc ok. Czujniki tęż są dobre, bo sprawdziłem aparatem i świecą się wszystki diody. Ale gdy wgrałem program, ten program, włączyłem robot, poruszałem czujnikami po linii i nic robot jechał cały czas prosto. A jak go puściłem to pojechał prosto i nie po linii. Może coś z programem? Zamieszczam program, może wy coś wykombinujecie. Bo już wykorzystałem wszystkie pomysły. 🙂😉

$regfile = "m88def.dat"
$crystal = 16000000

'Konfiguracja przetwornika analog-cyfra (ADC)
Config Adc = Single , Prescaler = Auto

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

'Konfiguracja portów
Config Portb = Output
Config Portd = &B01111111
Config Portc = Input

Portd.7 = 1

Przycisk Alias Pind.7
    Led Alias Portd.6
Enable_a Alias Portb.1
Enable_b Alias Portb.2
Silnik_prawy_a Alias Portd.3
Silnik_prawy_b Alias Portd.2
Silnik_lewy_a Alias Portd.1
Silnik_lewy_b Alias Portd.0

'Opis portów
'Enable_a - Silnik lewy - Portb.1 (PWM1A)
'Enable_b - Silnik prawy - portb.2 (PWM1B)
'Input1 - Silnik prawy A - Portd.3
'Input2 - Silnik prawy B - Portd.2
'Input4 - Silnik lewy A - Portd.0
'Input3 - Silnik lewy B - Portd.1
'Dioda - Portd.6
'Czujnik lewy skrajny - ADC5
'Czujnik lewy - ADC4
'Czujnik środkowy1 - ADC3
'Czujnik środkowy2 - ADC2
'Czujnik prawy - ADC1
'Czujnik prawy skrajny - ADC0

'Granica reagowania na linię - należy dobrać doświadczalnie
Const Granica = 500

'Deklaracje zmiennych
Dim Czujnik_skrajny_lewy As Single
Dim Czujnik_lewy As Single
Dim Czujnik_srodkowy1 As Single
Dim Czujnik_srodkowy2 As Single
Dim Czujnik_prawy As Single
Dim Czujnik_skrajny_prawy As Single
Dim W As Word



Set Led

'Blok instrukcji
Set Silnik_lewy_a
Reset Silnik_lewy_b
Set Silnik_prawy_a
Reset Silnik_prawy_b

Do

Bitwait Pind.7 , Reset                                      'czekaj aż 7 linia portu D będzie w stanie 0.


  Gosub Wczytaj_stany_przetwornikow
  If Czujnik_srodkowy1 > Granica Then
     'Silnik lewy - maksymalna prędkość
     Pwm1a = 255
     'Silnik prawy - maksymalna prędkość
     Pwm1b = 255
  Elseif Czujnik_srodkowy2 > Granica Then
     Pwm1a = 255
     Pwm1b = 255
  Elseif Czujnik_lewy > Granica Then
     Pwm1a = 0
     Pwm1b = 255
  Elseif Czujnik_skrajny_lewy > Granica Then
     Pwm1a = 0
     Pwm1b = 255
  Elseif Czujnik_prawy > Granica Then
     Pwm1a = 255
     Pwm1b = 0
  Elseif Czujnik_skrajny_prawy > Granica Then
     Pwm1a = 255
     Pwm1b = 0
     Else
     Pwm1a = 255
     Pwm1b = 255
  End If
Loop
End


Wczytaj_stany_przetwornikow:
Start Adc
W = Getadc(0)
W = Getadc(0)
Stop Adc
Czujnik_prawy = W
Start Adc
W = Getadc(1)
W = Getadc(1)
Stop Adc
Czujnik_skrajny_lewy = W
Start Adc
W = Getadc(5)
W = Getadc(5)
Stop Adc
Czujnik_lewy = W
W = Getadc(4)
W = Getadc(4)
Stop Adc
Czujnik_srodkowy1 = W
W = Getadc(3)
W = Getadc(3)
Stop Adc
Czujnik_srodkowy2 = W
W = Getadc(2)
W = Getadc(2)
Stop Adc
Czujnik_skrajny_prawy = W
Return
$regfile = "m88def.dat"
$crystal = 16000000
Config Portb = &B11111111
Config Portd = &B01111111
Portb = &B00000110
Portd = &B10000000

Bitwait Pind.7 , Reset

Do

Portd = &B00001010
Wait 1
Portd = &B00000101
Wait 1
Portd = &B00001000
Wait 1
Portd = &B00000010
Wait 1

Loop
Link do komentarza
Share on other sites

Witam, tak jak mówiłem podłączyłem zasilanie, dioda zielona i czerwona się zapaliła nacisnąłem przycisk i silniki tak jak mówiłem wcześniej. Więc dlatego nie wiem co jest grane. 🙂😉

Link do komentarza
Share on other sites

Zmienne "Czujnik_srodkowy2", "1" itd. na pewno odpowiadają rzeczywistemu rozmieszczeniu czujników? Możesz też spróbować zamienić wartościami Pwm1a i Pwm1b w pętli warunkowej oraz upewnić się, że oba silniki będą obracać się w tym samym kierunku po podaniu pwm1a i pwm1b wartości 255. Od siebie mogę polecić napisanie programu od nowa, bo widać, że przepisywany "na pałę" z mojego arta. W ten sposób się nie nauczysz programować.

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.