07.serial to graph 1
บทความนี้ต่อจาก บทความ 06.การรับข้อมูลตัวเลขจากพอร์ทอนุกรม
การทำงานรับข้อมูลจากบอร์ด Arduino แล้วนำมาพอร์ทกราฟเส้น โดยใช้ตำแหน่งกึ่งกลาง หน้าต่างงานเป็นตำแหน่งศูนย์
1. ประกอบวงจรตามรูป
2. เปิดโปแกรม Processing แล้วเขียนโปรแกรมดังนี้
import processing.serial.*;
Serial myPort; // กำหนดตัวแปรสำหรับพอร์ทอนุกรม
float[] vals;
int zero_line;
void setup()
{
size(400,300); // ขนาดหน้าต่างแสดงผล
smooth();
println(Serial.list()); // แสดงพอร์ทที่มีอยู่
myPort = new Serial(this, Serial.list()[1], 9600); // เรียกใช้พอร์ทหมายเลข [1]
vals = new float[width]; // An array for store data, array size = width of windows (400)
zero_line = height/2; //Location for vals = 0;
for (int i = 0; i < vals.length; i++)
{
vals[i] = 0; //initial value
}
}
void draw() {
background(255);
// Draw lines connecting all points
for (int i = 0; i < vals.length-1; i++) {
stroke(0);
strokeWeight(1);
line(i,zero_line -vals[i],i+1,zero_line -vals[i+1]);
}
// Slide everything down in the array
for (int i = 0; i < vals.length-1; i++) {
vals[i] = vals[i+1];
}
// Add a new value
while (myPort.available() > 0)
{
int inByte = myPort.read(); //อ่านข้อมูลจากพอร์ทอนุกรม
println(inByte);
vals[vals.length-1] = inByte;
}
}
3. เมื่อให้โปรแกรมทำงาน จะได้ผลลัพท์ดังนี้
ปรับปรุงโปรแกรมใหม่
ให้เป็นทุกครั้งที่รับข้อมูลใหม่ได้ จึงจะเขียนกราฟตัวใหม่