Skocz do zawartości

[Bascom] robot balansujący


zuba1

Pomocna odpowiedź

Witam.Robię robota balansującego takiego jak ten https://www.forbot.pl/forum/topics7/inny-robocik-balansujacy-vt5587.htm ,na tym akcelerometrze http://electropark.pl/akcelerometry/1896-mma7361l-modul-3-osowiego-akcelerometru-1-5-g-6-g-5901001896003.html i atmedze8.Napisałem prosty program tak aby robot złapał "pion" ,jednak w kodzie jest błąd i nie wiem gdzie. Brzmi on tak "end if expected""end slect expeced""line88".Kod wygląda tak:

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

Config Portd = Output

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

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

Pp Alias Portd.1                                            'wyjście prawe przednie
Pt Alias Portd.2                                            'wyjście prawe tylnie
Lp Alias Portd.3                                            'wyjście lewe przednie
Lt Alias Portd.4                                            'wyjście lewe tylnie

Dim X1 As Word
Dim X2 As Word
Dim X3 As Word

Dim Pomiar1 As Word
Dim Pomiar2 As Word
Dim Pomiar3 As Word

Do
Gosub Odczyt
Loop

Odczyt:                                                     'obliczanie przechyłu z wejścia x (adc0)

Convert1:
 Pomiar1 = Getadc(1)
 Select Case Pomiar1
   Case 0 To 33 : X1 = 90
   Case 34 To 67 : X1 = 80
   Case 68 To 101 : X1 = 70
   Case 102 To 135 : X1 = 60
   Case 136 To 168 : X1 = 50
   Case 169 To 202 : X1 = 40
   Case 203 To 236 : X1 = 30
   Case 237 To 270 : X1 = 20
   Case 271 To 303 : X1 = 10
   Case 304 To 337 : X1 = 0
   Case 338 To 371 : X1 = 10
   Case 372 To 404 : X1 = 20
   Case 405 To 438 : X1 = 30
   Case 439 To 472 : X1 = 40
   Case 473 To 505 : X1 = 50
   Case 506 To 540 : X1 = 60
   Case 541 To 573 : X1 = 70
   Case 574 To 607 : X1 = 80
   Case 608 To 641 : X1 = 90

Convert2:
 Pomiar2 = Getadc(1)
 Select Case Pomiar2
   Case 0 To 33 : X2 = 90
   Case 34 To 67 : X2 = 80
   Case 68 To 101 : X2 = 70
   Case 102 To 135 : X2 = 60
   Case 136 To 168 : X2 = 50
   Case 169 To 202 : X2 = 40
   Case 203 To 236 : X2 = 30
   Case 237 To 270 : X2 = 20
   Case 271 To 303 : X2 = 10
   Case 304 To 337 : X2 = 0
   Case 338 To 371 : X2 = 10
   Case 372 To 404 : X2 = 20
   Case 405 To 438 : X2 = 30
   Case 439 To 472 : X2 = 40
   Case 473 To 505 : X2 = 50
   Case 506 To 540 : X2 = 60
   Case 541 To 573 : X2 = 70
   Case 574 To 607 : X2 = 80
   Case 608 To 641 : X2 = 90

 End Select


Convert3:
 Pomiar3 = Getadc(1)
 Select Case Pomiar3
   Case 0 To 33 : X3 = 1
   Case 34 To 67 : X3 = 2
   Case 68 To 101 : X3 = 3
   Case 102 To 135 : X3 = 4
   Case 136 To 168 : X3 = 5
   Case 169 To 202 : X3 = 6
   Case 203 To 236 : X3 = 7
   Case 237 To 270 : X3 = 8
   Case 271 To 303 : X3 = 9
   Case 304 To 337 : X3 = 10
   Case 338 To 371 : X3 = 11
   Case 372 To 404 : X3 = 12
   Case 405 To 438 : X3 = 13
   Case 439 To 472 : X3 = 14
   Case 473 To 505 : X3 = 15
   Case 506 To 540 : X3 = 16
   Case 541 To 573 : X3 = 17
   Case 574 To 607 : X3 = 18
   Case 608 To 641 : X3 = 19

 End Select



Gosub Pion

Return

Pion:
Pwm1a = 100 + X1                                            'obliczanie siły oblotu koła lewego i prawego
Pwm1b = 100 + X2

If X3 > 10 Then Gosub Go                                    '  kierunrk obrotu koła
If X3 < 10 Then Gosub Tyl
If X3 = 10 Then Gosub Stopp

Gosub Odczyt

Return


End


Go:

Pp = 1
Pt = 0
Lp = 1
Lt = 0

Return

Tyl:

Pp = 0
Pt = 1
Lp = 0
Lt = 1

Return


Stopp:

Pp = 0
Pt = 0
Lp = 0
Lt = 0

Return
Link do komentarza
Share on other sites

zuba1, nie wiem, może za krótko programuję w bascomie, a może za słabo go znam, ale jak patrzę na twój kod to nie wiem o co chodzi w ogóle. Masz jakieś suby w kodzie, a nie masz ich zdefiniowanych, suby zamyka się poleceniem end sub, tego u ciebie nie widzę. W ogóle to kod jest mało czytelny. Powinieneś oddzielać suby od siebie chociażby 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!

Gość
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.