Използвам Processing и Arduino Uno, за да контролирам позицията на кръг на екрана с помощта на два потенциометъра. Arduino и компютърът комуникират чрез bluetooth. Ето кода за скицата за обработка:
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');
}
Ето кода за Arduino:
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.