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. เมื่อให้โปรแกรมทำงาน จะได้ผลลัพท์ดังนี้

ปรับปรุงโปรแกรมใหม่

    1. ให้เป็นทุกครั้งที่รับข้อมูลใหม่ได้ จึงจะเขียนกราฟตัวใหม่