Skocz do zawartości

[Czujniki] Jak zbudować robota z kamerą?


Pomocna odpowiedź

Witam, mam problem. Program roborealm mam podłączony do atmegi. Atmega steruje serwem. Potrafię zrobić np. coś takiego, że jak przesunę śledzony obiekt w prawo ekranu roborealm wysyła odpowiednią zmienną do atmegi, która ustawia serwo na maksymalną wartość w prawo i na odwrót. Mój problem polega na tym, jak zrobić żeby serwo wychylało się na konkretną wartość odpowiadającą przesunięciu śledzonego obiektu.

Napisałem w roborealm krótki programik który szczytuje wartość przesunięcia x:

x = GetVariable("COG_X")

motor=x

SetVariable "MOTOR", motor

Dane wysyłane są przez serial, program dla atmegi w bascomie wygląda następująco:

$regfile = "m16def.dat"

$crystal = 16000000

$baud = 57600

Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Porta , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8

Reset Porta

$baud = 19200 ' use baud rate

$hwstack = 32 ' default use 32 for the hardware stack

$swstack = 10 ' default use 10 for the SW stack

$framesize = 40

Dim Zmienna string*3 'nie wiem juz jaką zmienną dać bo na string servo nie działa

Enable Interrupts

Set Portd.2

Config Servos = 1 , Servo1 = Portd.2 , Reload = 10

Config Portd = Output

Cls

Cursor Off

Locate 6 , 7

Lcd "test serwa"

Servo(1) = 100

Wait 2

Cls

Do

Inputbin Zmienna

Locate 5 , 2

Lcd "liczba z serial= " ; Zmienna ;

Servo(1) = Zmienna

Loop

End

Na zmiennej string na lcd pokazują się liczby, które wysyłam tylko serwo głupieje, może trzeba ze stringa zrobić integer żeby serwo poprawnie działało ? dzięki

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...