Мой Arduino и мой компьютер не пожимают друг другу руки

Я использую Processing и Arduino Uno для управления положением круга на экране с помощью двух потенциометров. Arduino и компьютер общаются через Bluetooth. Вот код скетча Processing:

import processing.serial.*;

Serial myPort;
int x, y;

void setup() {
  size(400, 400);
  println(Serial.list());
  myPort = new Serial(this, Serial.list()[0], 115200);
  myPort.bufferUntil('\n');
  background(255);
  noStroke();
}

void draw() {
}

void serialEvent(Serial myPort) {
  println("here");
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    String items[] = split(inString, ',');
    if (items.length > 1) {
      float a = float(items[0]);
      float b= float(items[1]);
      x = (int) map(a, 0, 1023, 0, width);
      y = (int) map(b, 0, 1023, 0, height);
      background(255);
      fill(255, 0, 0);
      ellipse(x, y, 10, 10);
    }
  }
  //myPort.write('\r');
}

Вот код для Ардуино:

const int left_pot = A2;
const int right_pot = A3;
int x;
int y;

void setup(){
  Serial.begin(115200);
 /* while (Serial.available()<=0){
    Serial.println("hello?");
  }*/
}

void loop(){
  //if (Serial.available() > 0) {
    int inByte = Serial.read();
    x = analogRead(left_pot);
    y = analogRead(right_pot);
    Serial.print(x);
    Serial.print(", ");
    Serial.println(y);
    delay(2);
  //}
}

Как указано, код работает, но точка на экране очень дрожит. Поэтому я попытался реализовать протокол рукопожатия, основанный на «Как говорят вещи» (Igoe, стр. 62). Закомментированные строки должны делать это. Но когда они раскомментированы, красная точка больше не отображается, и скетч обработки никогда не доходит до команды println("здесь").

Я использую 32-битную обработку 2.0.1.


person Noah    schedule 02.08.2013    source источник


Ответы (1)


Ваш эскиз Arduino ждет, пока он не получит некоторые данные, прежде чем отправлять данные. Таким образом, ваш скетч Processing должен сначала отправить что-то через последовательный порт на Arduino. В настоящее время это не так. Попробуйте добавить что-нибудь, чтобы распечатать:

void setup() {
size(400, 400);
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 115200);
myPort.bufferUntil('\n');
background(255);
noStroke();
myPort.write('\r');  //Get the arduino to reply
}
person user2461391    schedule 02.08.2013