Skocz do zawartości

[Bascom] pomoc z LF programem na 3 czujniki


Matejko94

Pomocna odpowiedź

Witam prosze o sprawdzenie czy w tym programie jest cos nie tak poniewaz po wgraniu go do mikroprocesora moj robocik gubi sie tzn gdy zostanie polozony na podlozu i wlaczony to nawet po podniesieniu i gdy czujniki nic nie wykrywaja lewy silnik sie ciagle kreci oto kod

$regfile = "ATtiny2313.dat"
$crystal = 40000000
Config Portb = Output
Portb = &B00001100
Config Portd = Input
Portd = &B11111111

Dim Czas As Byte
Dim Ruchl As Bit
Dim Ruchp As Bit
Declare Sub Naprzod
Declare Sub Prawo
Declare Sub Lewo
Declare Sub Wstecz
Declare Sub Ddelay


Do

If Pind.5 = 0 Then Czas = 5
If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 0 Then Lewo
If Pind.4 = 0 And Pind.3 = 1 And Pind.2 = 1 Then Prawo
If Pind.4 = 1 And Pind.3 = 0 And Pind.2 = 1 Then Naprzod
If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 1 Then Wstecz
'End If

Loop

Sub Prawo:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 0 : Portb.4 = 0
Call Ddelay
End Sub

Sub Lewo
Portb.7 = 0 : Portb.6 = 0 : Portb.5 = 1 : Portb.4 = 0
Call Ddelay
End Sub

Sub Naprzod:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 1 : Portb.4 = 0
Call Ddelay
End Sub

Sub Wstecz:
Portb.7 = 0 : Portb.6 = 1 : Portb.5 = 0 : Portb.4 = 1
Call Ddelay
End Sub

'*****podprogram opoznienia *****
Sub Ddelay:
Waitms Czas
End Sub

End

ps. Programuje programatorem stk 200/300 podczas programowania zasilam caly uklad posluguje sie programem Bascom-AVR demo version kompiluje i wgrywam przy sprawdzeniu poprawnosci kodu nie wykrywa mi bledow

Link do komentarza
Share on other sites

Po co tak komplikować? Wywal to opóźnienie, zrób normalne warunki if...then (jak napisał Kaytec) i zobacz czy działa, ja do swoich robotów nie dodaje jakiś opóźnień i jeżdżą prawidłowo.

PS. nie powinno być:

If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 0 Then gosub Lewo 

zamiast:

If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 0 Then Lewo 

Oczywiście we wszystkich warunkach.

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

$regfile = "ATtiny2313.dat"
$crystal = 40000000
Config Portb = Output
Portb = &B01001110
Config Portd = Input
Portd = &B11111111

Declare Sub Naprzod
Declare Sub Prawo
Declare Sub Lewo
Declare Sub Wstecz
Declare Sub Ddelay


Do

If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 0 Then Gosub Lewo
If Pind.4 = 0 And Pind.3 = 1 And Pind.2 = 1 Then Gosub Prawo
If Pind.4 = 1 And Pind.3 = 0 And Pind.2 = 1 Then Gosub Naprzod
If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 1 Then Gosub Wstecz
'End If

Loop

Sub Prawo:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 0 : Portb.4 = 0
End Sub

Sub Lewo
Portb.7 = 0 : Portb.6 = 0 : Portb.5 = 0 : Portb.4 = 1
End Sub

Sub Naprzod:
Portb.7 = 1 : Portb.6 = 1 : Portb.5 = 1 : Portb.4 = 1
End Sub

Sub Wstecz:
Portb.7 = 0 : Portb.6 = 1 : Portb.5 = 0 : Portb.4 = 1
End Sub


End

dalej to samo juz nawet sciagalem plytke z podwozia bo myslalem ze moze zimne luty itp. ale jednak nic z tych rzeczy

podam schemat moze zle napisalem ? chodzi mi bardziej o portb zamiast 4 to 2 ?

ps. Nawet po tej zmianie nic nie daje

Link do komentarza
Share on other sites

Problem z piszczeniem juz rozwiazalem tak jak kolega Treker napisal pochodzily z silnikow bo na zasilaczy przelaczylem na za male napiecie i dlatego silniki nie mialy mocy by ruszyc

Ale dalej mam ten problem z Programem juz doszedlem to momentu ze skrecaniem lecz nie wiem dlaczego nie chce sie zalaczyc jada prosto

Link do komentarza
Share on other sites

Bo masz źle w programie jazdę w przód zrobioną:

Sub Naprzod:
Portb.7 = 1 : Portb.6 = 1 : Portb.5 = 1 : Portb.4 = 1
End Sub

A powinno być:

Sub Naprzod:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 1 : Portb.4 = 0
End Sub
Link do komentarza
Share on other sites

Przejrzyj na spokojnie ten program, bo jak widać masz głupie błędy w kodzie, naucz się je sam wyłapywać bo później będziesz miał problem z pisaniem własnych programów.

Link do komentarza
Share on other sites

Dzieki za dobre rady ale juz mi sie udalo 🙂 wiem musialem troche pokombinowac z kodem sam go napisac od poczatku i wyszlo mi

$regfile = "ATtiny2313.dat"
$crystal = 40000000
Config Portb = Output
Portb = &B11111111
Config Portd = Input
Portd = &B11111111

Declare Sub Naprzod
Declare Sub Prawo
Declare Sub Lewo
Declare Sub Wstecz
Declare Sub Ddelay


Do

If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 0 Then Gosub Lewo
If Pind.4 = 0 And Pind.3 = 1 And Pind.2 = 1 Then Gosub Prawo
If Pind.4 = 1 And Pind.3 = 0 And Pind.2 = 1 Then Gosub Naprzod
If Pind.4 = 1 And Pind.3 = 1 And Pind.2 = 1 Then Gosub Wstecz
'End If

Loop

Sub Prawo:
Portb.7 = 0 : Portb.6 = 1 : Portb.5 = 0 : Portb.4 = 0
End Sub

Sub Lewo
Portb.7 = 0 : Portb.6 = 0 : Portb.5 = 0 : Portb.4 = 1
End Sub

Sub Naprzod:
Portb.7 = 0 : Portb.6 = 1 : Portb.5 = 0 : Portb.4 = 1
End Sub

Sub Wstecz:
Portb.7 = 1 : Portb.6 = 0 : Portb.5 = 0 : Portb.4 = 0
End Sub


End

Moze komus sie kiedys przyda 🙂 jutro dopracuje wszystko i wystawie mojego robocika na diode

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.