Skocz do zawartości

kkisiela1996

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O kkisiela1996

  • Ranga
    1/10
  • Urodziny 12.02.1996

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Gdy tylko zmieni się wartość po stronie kierownicy to należy wysłać nowe wartości do robota. Może rzeczywiście spróbuje ograniczyć wysyłanie danych za pomocą warunków. Sprawdzałbym czy co najmniej jedna wartość się zmieniła i jeżeli tak by było to wtedy dopiero dane są wysyłane.
  2. Cześć @Treker, Postaram się bardziej szczegółowo opisać moją sytuację. Jeżeli chodzi o kod to nic specjalnego. Chciałem przetestować przesył danych przy pomocy metody write(po stronie kierownicy) i metody read po stronie robota. Wyniki wyświetlam na monitorze portu szeregowego(po stronie robota). Widać tam z jakimi opóźnieniami odbieram dane. Środowisko, z którego korzystam do programowania arduino i robota to ArduinoIDE. Kod dla arduino z kierownicą wygląda tak (pisany na szybko tylko po to aby przetestować wysyłanie danych) : int kierownica; int przod; int tyl; void setup() { Serial.begin(9600); kierownica = 0; przod = 0; tyl = 0; } void loop() { kierownica = analogRead(A0); przod = analogRead(A2); tyl = analogRead(A1); String str1 = String(kierownica); String str3 = String(tyl); String str2 = String(przod); String str = str1+" "+str2+" "+str3+'\n'; char* buf = (char*) malloc(sizeof(char)*str.length()+1); str.toCharArray(buf, str.length()+1); Serial.write(buf); free(buf); } Małe objaśnienie : Zmienna 'kierownica' ma wartości z obrotu kierownicą, zmienna 'przod' i 'tyl' to odpowiednio wartości z pedału gazu i hamulca(który tutaj miałby pełnić funkcje jazdy tyłem) Te 3 wartości zapisuje do zmiennej typu String. Potem jak widać jest zamieniam tego Stringa na tablice char (w innej formie blokowało mnie środowisko). Po stronie robota to jeszcze prostszy kod. Wygląda tak: String str= ""; void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { if(Serial1.available()) { char c = Serial1.read(); if(c!='\n') { str+=c; } else { Serial.println(str); str=""; } } } Pobieram komendę znak po znaku i jak natrafię na koniec linii to wyświetlam wynik w monitorze portu szeregowego. Jak widać póki co nie steruje nim w żaden sposób bo na starcie chciałem właśnie zobaczyć czy będą jakieś opóźnienia i niestety je mam. Dodatkowo napisałem aplikację na telefon pod system android, która też przez bluetooth łączy się z robotem (tutaj już mam interfejs, który pozawala na sterowanie) i opóźnień praktycznie nie ma.
  3. Cześć. Mam problem w komunikacji między płytką arduino, a robotem. Kierownica komputerowa za pomocą, której sterowany jest robot jest podłączona do płytki arduino. Do komunikacji używam modułu HC-05. Podczas próby wysłania komendy do robota są straszne opóźnienia (na oko jakieś 5-6 sekund). Jest na to jakiś sposób ? Dodam, że podczas przesyłania komend z telefonu do robota nie mam opóźnień.
×
×
  • Utwórz nowe...