Şu anda Arduino proje kitabının 14. projesinde bulunuyorum.
Arduino'yu kullanarak dizüstü bilgisayarımdaki bir işleme taslağını kontrol etmeye çalışıyorum. Bu, bir görüntünün arka planını kontrol etmek için bir potansiyometre kullanılarak gerçekleştirilir.
Arduino kodu:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(analogRead(A0)/4);
}
İşleme:
//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);
}
Şimdi, kod çalışırken ve potansiyometreyi döndürdüğümde arka plan rengi değişirken, potansiyometreyi döndürmek ve arka plan rengini görmek ve işlemin seri monitöründeki Arduino / potansiyometreden gelen değerler arasında büyük bir gecikme var.
Ne denedim:
- Seri iletişim hızını değiştirme
Seri iletişimin hızını düşürdüğümde, örneğin 100 civarında, potansiyometreyi döndürmek ve dizüstü bilgisayarımda değiştiğini görmek arasındaki gecikmenin yaklaşık 1 saniyeye düştüğünü fark ettim. Ancak Seri iletişimin hızını daha da düşürdüğümde, örneğin 1 değeri, gecikme tekrar artar.
Flip tarafında, standart 9600 hızında, potansiyometredeki değişiklikler dizüstü bilgisayarda / işlemede görünmeden önce gecikme çok büyüktür, kabaca 5sn ++.
İletişim hızını azaltmak (belirli bir noktaya kadar) neden gecikmeyi azaltır ve arttırmak zaman gecikmesini artırır? Ayrıca, anında yakın yapabileceğim bir şey var mı?
loop()
. İşleme programınızın buna ayak uyduracak kadar hızlı çalışmaması oldukça olasıdır.loop()
Yavaşlatmak için Arduino kodunuza bir gecikme koymayı deneyin ; örndelay(50)
.