Skocz do zawartości

Jaki program do sterowania dwoma serwo za pomocą modułu nrf24l01


Pomocna odpowiedź

Napisano

Jestem posiadaczem arduino nano i uno .Ostatnio napotkałem problem z sterowanie dwoma serwo na odległość . Problem polega na tym że jak podepnę jedno serwo na podstawowy program do sterowania to działa ale jak zmienię program i podepnę 2 serwa to już nie działa .Nie wiem na czym polega dokładnie problem ale podejrzewam program. (Podstawowy program jest na jedno serwo a zmieniony na dwa)

 

 

nadajnik__program_podstawowy_.zip

odbiornik__program_podstawowy_.zip

nadajnik__program_zmieniony_.zip

odbiornik__program_zmieniony_.zip

Skoro każdy program ma max 35 linijek równie dobrze mógłbyś je wkleić na forum, zaoszczędziłbyś sobie i innym niepotrzebnej roboty. To po pierwsze.

Po drugie - co rozumiesz przez "nie działa". Tylko jedno serwo się rusza? Żadne się nie rusza? Oba się ruszają tak samo?

Spójrz na tablicę "msg" - używasz tablicy 1-elementowej chociaż funkcja "radio.read" przyjmuje dwa parametry - adres tablicy i jej rozmiar. Zamiast za jednym razem wysłać dwie wartości, Ty dwa razy wysyłasz jedną wartość. Nie wiedząc jakiej konkretnie biblioteki używasz, pokusiłbym się nawet o założenie, że pierwsza wiadomość może nie zostać do końca wysłana, a Ty już chcesz wysłać następną (no bo nie znam kodu bibliotek). Druga sprawa - skąd odbiornik ma wiedzieć, która wiadomość jest dla którego serwa?

Spróbuj z tablicą dwuelementową, utwórz sobie
 

// nadajnik
int msg[2];

//...

msg[0] = zmapowany_potencjometr1;
msg[1] = zmapowany_potencjometr2;
radio.write(msg, 2);

//...

i

// odbiornik
int msg[2];

//...
  
radio.read(msg, 2);
serwo1.write(msg[0]);
serwo2.write(msg[1]);

//...

Może pomoże... Rozszerz opis problemu, bo strasznie mało informacji.

(edytowany)

Nie pomoże - trzeba by było 

radio.read(msg,4);

albo zdeklarować msg jako unsigned char a nie int.

A tak poprawnie to będzie:

//nadajnik
radio.write(msg, sizeof msg);
//odbiornik
radio.read(msg, sizeof msg);
	

 

Edytowano przez ethanak

ok dzięki spróbuje tak jak mówiłeś

a co do : co rozumie przez nie działa

czasami ruszają się ona tak samo a czasami w ogóle nic się nie dzieje.

 

1 godzinę temu, ethanak napisał:

Nie pomoże - trzeba by było 


radio.read(msg,4);

albo zdeklarować msg jako unsigned char a nie int.

A tak poprawnie to będzie:


//nadajnik
radio.write(msg, sizeof msg);
//odbiornik
radio.read(msg, sizeof msg);
	

 

jak i gdzie mam to dać że siętak zapytam

a tak z innej beczki macie namiary na jakieś dobre kable najlepiej męsko-żeńskie

 

bo istnieje prawdopodobieństwo że kable nie kontaktują (wiadomo wszystko chińskie łapki robiły 😉)

@Nawyk raczej twój pomysł działa ba pierwsze serwo się rusza ale drugie nie mogę sprawdzić dokładnie ponieważ kable od modułu komunikacyjnego nie kontaktują.

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