Tôi hiện đang ở dự án # 14 của cuốn sách dự án Arduino.
Tôi đang cố gắng kiểm soát một bản phác thảo xử lý trên máy tính xách tay của mình bằng Arduino của tôi. Điều này được thực hiện bằng cách sử dụng một chiết áp để kiểm soát nền của hình ảnh.
Mã Arduino:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(analogRead(A0)/4);
}
Chế biến:
//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);
}
Bây giờ, trong khi mã hoạt động và màu nền thay đổi khi tôi bật chiết áp, có một độ trễ lớn giữa việc xoay chiết áp và nhìn thấy màu thay đổi nền, và các giá trị từ Arduino / chiết áp thay đổi trên màn hình nối tiếp của quá trình xử lý.
Những gì tôi đã thử:
- Thay đổi tốc độ giao tiếp nối tiếp
Tôi nhận thấy rằng khi tôi giảm tốc độ giao tiếp Nối tiếp, ví dụ khoảng 100, độ trễ giữa việc quay chiết áp và thấy nó thay đổi trên máy tính xách tay của tôi giảm xuống còn khoảng 1 giây. Tuy nhiên, khi tôi giảm tốc độ giao tiếp Nối tiếp hơn nữa, ví dụ giá trị 1, độ trễ sẽ tăng trở lại.
Mặt khác, ở tốc độ tiêu chuẩn 9600, độ trễ là rất lớn, khoảng 5sec ++ trước khi những thay đổi trong chiết áp xuất hiện trên máy tính xách tay / xử lý.
Tại sao việc giảm tốc độ liên lạc (lên đến một điểm nhất định) làm giảm độ trễ thời gian và tăng tốc độ trễ làm tăng độ trễ thời gian? Ngoài ra, có cách nào tôi có thể làm cho nó gần ngay lập tức?
loop()
. Rất có thể chương trình Xử lý của bạn không chạy đủ nhanh để theo kịp chương trình. Hãy thử đặt một độ trễ vàoloop()
mã Arduino của bạn để làm chậm nó; ví dụdelay(50)
.