Saat ini saya sedang mengerjakan proyek # 14 dari buku proyek Arduino.
Saya mencoba mengendalikan sketsa pemrosesan di laptop saya menggunakan Arduino saya. Ini dilakukan dengan menggunakan potensiometer untuk mengontrol latar belakang suatu gambar.
Kode Arduino:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.write(analogRead(A0)/4);
}
Pengolahan:
//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);
}
Sekarang, ketika kode bekerja, dan warna latar belakang berubah ketika saya mengaktifkan potensiometer, ada jeda yang sangat besar antara memutar potensiometer dan melihat warna latar belakang berubah, dan nilai-nilai dari Arduino / potensiometer berubah pada monitor serial pemrosesan.
Apa yang saya coba:
- Mengubah kecepatan komunikasi serial
Saya perhatikan bahwa ketika saya mengurangi kecepatan komunikasi serial, misalnya sekitar 100, penundaan antara memutar potensiometer dan melihatnya berubah pada laptop saya berkurang sekitar 1 detik. Namun, ketika saya mengurangi kecepatan komunikasi Serial lebih jauh, misalnya nilai 1, penundaan meningkat lagi.
Di sisi lain, pada kecepatan standar 9600, penundaan sangat besar, kira-kira 5 detik ++ sebelum perubahan potensiometer muncul di laptop / pemrosesan.
Mengapa mengurangi kecepatan komunikasi (hingga titik tertentu) mengurangi jeda waktu, dan meningkatkannya meningkatkan jeda waktu? Juga, adakah di sana saya bisa membuatnya dekat sesaat?
loop()
. Sangat mungkin bahwa program Pemrosesan Anda tidak berjalan cukup cepat untuk mengikutinya. Coba tundaloop()
kode Arduino Anda untuk memperlambatnya; misdelay(50)
.