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).