Получение двух значений через последовательный порт с помощью сервоприводов

Итак, у меня есть Java-программа, которая получает координаты мыши x и y на дисплее, и я хотел бы отправить их на свою Arduino, а затем переместить два моих сервопривода в эти места (у меня есть два сервопривода друг над другом, один для x и один для y).

Код Java (обработки), который у меня есть, приведен ниже

void draw(){  //то же, что цикл в arduino
  background(52, 152, 219); // цвет фона окна (r, g, b) или (от 0 до 255)
  //давайте дадим заголовок нашему окну
  fill(0, 255, 0);               // цвет текста (r, g, b)
  textFont(font);
  text("Ripple Effect Maker", 80, 30);  // ("текст", координата x, координата y)
  ellipse(mouseX, mouseY, 33, 33);
  int x = mouseX;
  int y = mouseY;
  port.write(x+":"+y);
  println(x+":"+y);
  //println("y="+y);
  delay(100);
}

У меня мало кода для Arduino, потому что я не могу найти способ разделить данные на две отдельные переменные, а затем переместить сервоприводы в соответствующие им переменные.

Спасибо за помощь!

, 👍0

Обсуждение

https://majenko.co.uk/blog/reading-serial-arduino, @Juraj


1 ответ


Лучший ответ:

1

Ваша проблема в том, что вы ничего не предоставляете для разделения данных. Вы просто отправляете координаты X и y с : между X и y. Между буквой y и следующей буквой X ничего нет.

Изменив строку

port.write(x+":"+y);

Кому

port.write(x+":"+y+"\n");

Затем вы получаете символ перевода строки, чтобы разделить данные.

,