Skocz do zawartości

[ Bascom] Co źle napisałem? Line follower Pwm


coollerus

Pomocna odpowiedź

To co w temacie. Bascom go nie kompiluje...

A to jest program:

 $regfile = "attiny2313.dat"
$crystal = 10000000
'$noramclear


Config Portb = &B11111101
Portb = &B00000010

Config Portd = &B00000000
Portd = &B00000000


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64

Sensor_1 Alias Pind.3
Sensor_2 Alias Pind.4
Sensor_3 Alias Pind.5
Sensor_4 Alias Pind.2


Do
If Portb.6 = 1 Then Pind.3 = 0 And Pind.4 = 0 And Pind.5 = 0 And Pind.2 = 0       'przełącznik

End If
Loop



Do

If Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub Go

Elseif Sensor_1 = 1 And Sensor_2 = 0 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosublewo

Elseif Sensor_1 = 0 And Sensor_2 = 1 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub Lewo_1

Elseif Sensor_1 = 0 And Sensor_2 = 0 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub Lewo_1

Elseif Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 0 And Sensor_4 = 1 Then Gosub Prawo

Elseif Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 1 And Sensor_4 = 0 Then Gosub Prawo_1

Elseif Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 0 And Sensor_4 = 0 Then Gosub Prawo_1

Elseif Sensor_1 = 0 And Sensor_2 = 0 And Sensor_3 = 0 And Sensor_4 = 0 Then Gosub Lewo_1

End If
Loop



Go:
Pwm1a = 255
Pwm1b = 255
Return

Lewo:
Pwm1a = 255
Pwm1b = 150
Return

Lewo_1:
Pwm1a = 255
Pwm1b = 50
Return

Prawo:
Pwm1a = 150
Pwm1b = 255
Return

Prawo_1:
Pwm1a = 50
Pwm1b = 255
Return

A to schemat. Co prawda bez pwm (na płytce mam):

Czujniki ustawione są w lini prostej.

Dzięki za pomoc.

Link do komentarza
Share on other sites

$regfile = "attiny2313.dat"
$crystal = 10000000
'$noramclear


Config Portb = &B11111101
Portb = &B00000010

Config Portd = &B00000000
Portd = &B00000000


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64

Sensor_1 Alias Pind.3
Sensor_2 Alias Pind.4
Sensor_3 Alias Pind.5
Sensor_4 Alias Pind.2



'If Portb.6 = 1 Then
'Pind.3 = 0
'Pind.4 = 0
'Pind.5 = 0
'Pind.2 = 0       'przełącznik





Do

If Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub Go
if Sensor_1 = 1 And Sensor_2 = 0 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub lewo
if Sensor_1 = 0 And Sensor_2 = 1 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub Lewo_1
if Sensor_1 = 0 And Sensor_2 = 0 And Sensor_3 = 1 And Sensor_4 = 1 Then Gosub Lewo_1
if Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 0 And Sensor_4 = 1 Then Gosub Prawo
if Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 1 And Sensor_4 = 0 Then Gosub Prawo_1
if Sensor_1 = 1 And Sensor_2 = 1 And Sensor_3 = 0 And Sensor_4 = 0 Then Gosub Prawo_1
if Sensor_1 = 0 And Sensor_2 = 0 And Sensor_3 = 0 And Sensor_4 = 0 Then Gosub Lewo_1

Loop



Go:
Pwm1a = 255
Pwm1b = 255
Return

Lewo:
Pwm1a = 255
Pwm1b = 150
Return

Lewo_1:
Pwm1a = 255
Pwm1b = 50
Return

Prawo:
Pwm1a = 150
Pwm1b = 255
Return

Prawo_1:
Pwm1a = 50
Pwm1b = 255
Return
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

Można wykorzystać elseif który odciąży troche procka, ale na początek to co dałem ja wystarczy. Nie wiem po co dałeś tą pierwszą pętle do-loop, z której nigdy nie wskoczył by program w obsługę "czujników" tylko cały czas by czekał na zmianę pinu.Poza tym, nie wybrałeś najlepszego schematu z sieci... Cały czas uP będzie wisiał na resecie... Musisz zmienić układ resetu uProcesora tj :

Usunąć kondensator 10uF łączący się z pinem resetu i plusem zasilania, w jego miejsce dać ten rezystor który jest obok, a w miejsce pozostaw puste.

Pozdrawiam

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dobra, wielkie dzięki. Z tym kondensatorem to już gdzieś czytałem. A może zamiast zostawiać puste, to dać tam ten kond?

A, i jeszcze jedno. Czemu przy przełączniku jest ' bo nie rozumiem? Będzie czytał to?

Link do komentarza
Share on other sites

Kondensator przy reset można dać, ale mniejszy. 100nF wystarczy w zupełności.

Przydaje się z dwóch powodów. Po pierwsze filtruje zakłócenia. Po drugie zapewnie odpowiednią długość impulsu resetującego.

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.