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
Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku
-
- 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
Co si takhle prostudovat nejdříve dokumentaci k Serial
https://www.arduino.cc/reference/en/lan ... /parseint/

https://www.arduino.cc/reference/en/lan ... /parseint/
-
- 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
Keby som s toho nebol polovicny jelen tak tu nepisem, napriklad vcera som prisiel na to ze mozem spolu pocitat int a float 



-
- 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
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:
tie premenne potom hodim do funkcie, ktora bude pracovat s motormi
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);
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host