Stránka 1 z 1
Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku
Napsal: 09 pro 2020, 18:35
od 00alkskodi00
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
Re: Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku
Napsal: 10 pro 2020, 09:36
od ondraN
Co si takhle prostudovat nejdříve dokumentaci k Serial
https://www.arduino.cc/reference/en/lan ... /parseint/
Re: Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku
Napsal: 10 pro 2020, 21:45
od 00alkskodi00
Keby som s toho nebol polovicny jelen tak tu nepisem, napriklad vcera som prisiel na to ze mozem spolu pocitat int a float
Re: Ovladanie dvoch x y motorov pomocou serial a hw alebo sw joysticku
Napsal: 12 pro 2020, 21:58
od 00alkskodi00
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