Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku

Odpovědět
00alkskodi00
Příspěvky: 21
Registrován: 29 srp 2020, 10:02
Reputation: 0

Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku

Příspěvek od 00alkskodi00 » 09 pro 2020, 18:35

Zdravim vsetkych.

Mam taky pre mna zadrhel.

Potrebujem ovladat dva motory naraz. Data, ktore pojdu cez serial su taketo: X178,Y-211

Akym sposobom viem yieto data rozdelit do dvoch premennych? Keby to bolo iba cislo, cislo tak by sa to citalo ako dva bajty ak sa nemylim. Okrem tohto prikazu pouzivam aj nejake tlacitka a podobne ale mam tak aj joystick a tie data proste vypadaju takto ako som napisal

Neviem ci som to napisal zrozumitelne

Dikes

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku

Příspěvek od ondraN » 10 pro 2020, 09:36

Co si takhle prostudovat nejdříve dokumentaci k Serial :mrgreen:
https://www.arduino.cc/reference/en/lan ... /parseint/

00alkskodi00
Příspěvky: 21
Registrován: 29 srp 2020, 10:02
Reputation: 0

Re: Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku

Příspěvek od 00alkskodi00 » 10 pro 2020, 21:45

Keby som s toho nebol polovicny jelen tak tu nepisem, napriklad vcera som prisiel na to ze mozem spolu pocitat int a float ;)
:mrgreen:

00alkskodi00
Příspěvky: 21
Registrován: 29 srp 2020, 10:02
Reputation: 0

Re: Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku

Příspěvek od 00alkskodi00 » 12 pro 2020, 21:58

Tak som sa do toho pustil a urobil som nieco co bolo v mojich silach, urcite to pojde jednoduhsie, len naozaj neviem ako, je to velmi pomale pokial by som chcel ovladat packou cez bluetooth nejake zariadenie, ked som to pusril v serial moniore a zadal tam nejaku hodnotu naprilkad X221,Y-31 tak to trvalo necelu sekundu kym mi prisla odpoved, myslite si ze to bude aj pri realnom ovladani take pomale ?

tu je kod:

Kód: Vybrat vše

String a = "X19,Y51"; // takto budu vapadat prichadzajuce data

void setup() {

  Serial.begin(115200);


}

void loop() {
while (Serial.available() > 0) {
  a = Serial.readString();
  }

    int dlzka = a.length() + 1; // zisti dlzku prichodzieho stringu
    char arrB[dlzka]; // pole pre ulozenie ascii 
  a.toCharArray(arrB, dlzka); // uloz string do pola
  // pozicie v array X a Y
  int poziciaX;
  int poziciaY;

  for (int i = 0; i < dlzka; i++) {
    // ak je znak X potom...
    if (arrB[i] == 88) {  //88 = X
      //Serial.print("Znak X sa nachádza: ");
      //Serial.println(i);
      poziciaY = i;
    }
    // ak je znak Y potom...
    if (arrB[i] == 89) {  //89 = Y
      //Serial.print("Znak Y sa nachádza: ");
      //Serial.println(i);
      poziciaY = i;
    }
    //Serial.print(arrB[i]);
  }
  // pozicia ciarka v array
  int poziciaiarka = poziciaY - 1;
  //Serial.print("Znak , sa nachádza: ");
  //Serial.println(poziciaiarka);

  // array X
  int dlzkaX = poziciaiarka - 1; // dlzka pola pre X suradnicu
  //Serial.println(dlzkaX);
  char arrX[dlzkaX]; // pole pre X suradnicu
  //Serial.print("X: ");
  String xJoystickStr; // premenna na vytiahnutie dat z pola X
  for (int i = 0; i < dlzkaX; i++) {
    arrX[i] = arrB[i + 1]; // priradzovanie char znakov do noveho pola X
    //Serial.print(arrX[i]);
    xJoystickStr += arrX[i]; // priradzovanie char znakov do stringu
  }
  int xJoystick = xJoystickStr.toInt(); // konverzia stringu do int, aby sa to dalo pouzit ako cislo
  //Serial.println(xJoystick);
  //Serial.println("");
  // array Y
  int dlzkaY = dlzka - poziciaiarka - 2;  // dlzka pola pre Y suradnicu
  //Serial.println(dlzkaY);
  char arrY[dlzkaY]; // pole pre Y suradnicu
  //Serial.print("Y: ");
  String yJoystickStr; // premenna na vytiahnutie dat z pola Y
  for (int i = 0; i < dlzkaY; i++) {
    arrY[i] = arrB[i + poziciaiarka + 2]; // priradzovanie char znakov do stringu
    //Serial.print(arrY[i]);
    yJoystickStr += arrY[i];
  }
  int yJoystick = yJoystickStr.toInt(); // konverzia stringu do int, aby sa to dalo pouzit ako cislo
  //Serial.println(yJoystick);
  //Serial.println("");

  Serial.println(xJoystick + yJoystick);

}
tie premenne potom hodim do funkcie, ktora bude pracovat s motormi

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů