나는 현재 Arduino 프로젝트 북의 프로젝트 # 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);
}
이제 코드가 작동하고 전위차계를 돌리면 배경색이 변하는 동안 전위차계 를 돌리고 배경색이 변하는 것을 보는 것과 처리의 직렬 모니터에서 Arduino / 포텐쇼미터의 값이 변하는 것에는 큰 차이가 있습니다.
내가 시도한 것 :
- 직렬 통신 속도 변경
직렬 통신 속도 (예 : 약 100)를 줄이면 전위차계를 돌리고 랩톱에서 속도가 바뀌는 것을 보는 데 걸리는 지연이 약 1 초로 줄어드는 것을 알았습니다. 그러나 직렬 통신 속도를 더 낮추면 (예 : 값 1) 지연이 다시 증가합니다.
반대로, 표준 속도 9600에서, 전위차계의 변화가 랩탑 / 프로세싱에 나타나기 전에 약 5 초 ++의 지연이 큽니다.
통신 속도를 낮추면 (특정 지점까지) 왜 시간 지연이 줄어들고 증가하면 시간 지연이 증가합니까? 어쨌든 내가 거의 즉각적으로 만들 수 있습니까?
loop()
. 처리 프로그램이 그 속도에 따라 충분히 빠르게 실행되지 않을 수 있습니다.loop()
Arduino 코드에서 지연 시간을 두어 느리게하십시오. 예delay(50)
.