Зараз я перебуваю на проекті № 14 книги «Ардуїно».
Я намагаюся керувати ескізом обробки на своєму ноутбуці за допомогою свого Arduino. Це досягається за допомогою потенціометра для керування фоном зображення.
Код Ардуїно:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(analogRead(A0)/4);
}
Обробка:
//imports serial library
import processing.serial.*;
//setups the serial object
Serial myPort;
//creates an object for the image
PImage logo;
//variable to store background color
int bgcolor = 0;
void setup(){
colorMode(HSB,255);
logo = loadImage("http://arduino.cc/logo.png");
size(logo.width,logo.height);
println("Available serial ports");
println(Serial.list());
myPort = new Serial(this,Serial.list()[0],9600);
}
//equivalent of arduino's loop function
void draw(){
if(myPort.available() > 0)
{
bgcolor = myPort.read();
println(bgcolor);
}
background(bgcolor,255,255);
image(logo,0,0);
}
Тепер, коли код працює, а колір тла змінюється, коли я повертаю потенціометр, існує величезна відстань між поверненням потенціометра і побаченням зміни фону кольору, і значення ардуїно / потенціометра змінюються на послідовному моніторі обробки.
Що я спробував:
- Зміна швидкості послідовного зв'язку
Я помітив, що коли я знижую швидкість послідовного зв’язку, наприклад, близько 100, затримка між повертанням потенціометра і переглядом його зміни на ноутбуці зменшується приблизно до 1 секунди. Однак, коли я ще більше знижую швидкість послідовного зв'язку, наприклад, значення 1, затримка знову збільшується.
З іншого боку, при стандартній швидкості 9600 затримка величезна, приблизно 5 сек ++, перш ніж зміни потенціометра з'являться на ноутбуці / обробці.
Чому зменшення швидкості зв'язку (до певного моменту) зменшує часовий затримку, а її збільшення збільшує часовий запіз? Крім того, чи все-таки я можу зробити це майже миттєвим?
loop()
. Цілком можливо, що ваша програма обробки не працює досить швидко, щоб не відставати від неї. Спробуйте ввести затримку вloop()
коді Arduino, щоб уповільнити його; напрdelay(50)
.