Ich bin derzeit auf Projekt # 14 des Arduino-Projektbuchs.
Ich versuche, mit meinem Arduino eine Verarbeitungsskizze auf meinem Laptop zu steuern. Dies wird erreicht, indem ein Potentiometer verwendet wird, um den Hintergrund eines Bildes zu steuern.
Arduino-Code:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(analogRead(A0)/4);
}
Wird bearbeitet:
//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);
}
Nun, während der Code funktioniert und sich die Hintergrundfarbe ändert, wenn ich das Potentiometer drehe, gibt es eine große Verzögerung zwischen dem Drehen des Potentiometers und dem Erkennen der Hintergrundänderungsfarbe, und die Werte vom Arduino / Potentiometer ändern sich auf dem seriellen Monitor der Verarbeitung.
Was ich versucht habe:
- Ändern der Geschwindigkeit der seriellen Kommunikation
Ich habe festgestellt, dass sich die Verzögerung zwischen dem Drehen des Potentiometers und der Änderung auf meinem Laptop auf etwa 1 Sekunde verringert, wenn ich die Geschwindigkeit der seriellen Kommunikation verringere, z. B. um 100. Wenn ich jedoch die Geschwindigkeit der seriellen Kommunikation weiter absenke, z. B. auf den Wert 1, erhöht sich die Verzögerung erneut.
Auf der anderen Seite ist die Verzögerung bei der Standardgeschwindigkeit von 9600 sehr groß, ungefähr 5 Sekunden ++, bevor die Änderungen am Potentiometer auf dem Laptop / der Verarbeitung angezeigt werden.
Warum wird durch Verringern der Kommunikationsgeschwindigkeit (bis zu einem bestimmten Punkt) die Zeitverzögerung verringert und durch Erhöhen die Zeitverzögerung erhöht? Auch gibt es überhaupt ich kann es fast sofort machen?
loop()
. Es ist gut möglich, dass Ihr Verarbeitungsprogramm nicht schnell genug läuft, um damit Schritt zu halten. Versuchen Sie, eine Verzögerung inloop()
Ihren Arduino-Code einzufügen, um ihn zu verlangsamen. zBdelay(50)
.