วันเสาร์ที่ 5 กันยายน พ.ศ. 2558

ใข้ Scilab plot ข้อมูล real time จาก Arduino

โปรแกรม ฝั่่ง Arduino
void setup() {

Serial.begin(9600); // กำหนดค่าความเร็วให้ Serial
}
\\konkarhoon.blogspot.com
void loop() {
for (int i=0;i<900;i++)  // สรัาง for loop โดยกำหนดให้ i=0 ถ้า i เพิ่มขึ้นทีละ 1 จนถึง 900
{
Serial.print(i);    // สั่งให้ส่งข้อมูล มาทาง serial
delay(50);       // ใส่ค่า delay 50ms เพื่อให้ arduino ส่งข้อมูลมา ทีละ 50 มิลลิวินาที
//konkarhoon.blogspot.com
}
}

//konkarhoon.blogspot.com
โดยต้องใช้ scilab Version 5.4 (Version 5.5 ยังไม่ support)
ต่อไป เราจะ plot ค่าที่ arduino ส่งมาบน scilab
เปิด scilab ขึ้นมา

ในการจะใช้ function serial port ใน scilab ต้องไปเปิดฟังก์ชั่นเพิ่มเติมก่อน
โดยการไปที่ menu Module manager - atoms




















//konkarhoon.blogspot.com

 Serial Comunication Tool box




หลังจาก install แล้วเขียน code ใน scilab ดังนี้
คลิ๊ก SciNotes ที่แถบเครื่องมือมุมบนซ้ายขึ้นมาเพื่อเขียนโปรแกรมรวดเดียว
//konkarhoon.blogspot.com
h=openserial(4,"9600,n,8,1");      //กำหนดให้ h คือ serial port com4 ความเร็ว 9600 ซึ่งก็คือ port ที่ต่อ arduino(ถ้ายังไม่                                                           ต่อ arduino จะขึ้น error)
for i=1:1000;                                //กำหนดให้ i มีค่ามากกว่าของ arduino ซึ่งจะ plot กราฟจาก 1 ถึง 1000
answer=readserial(h)                   //กำหนดให้ answer รับค่า มาจาก serial port
answery=strtod(answer);             //แปลงข้อมูล string ไปเป็นชนิด Double เพื่อ plot กราฟ
plot2d3('gnn',i,answery);             //กำหนดชนิดการ plot กราไฟให้ scilab
drawnow();                                  //สั่ง plot กราฟ
end
closeserial(h)
//konkarhoon.blogspot.com
เขียนเสร็จแล้ว กด Execute รูปลูกศร เพื่อ Run คำสั่ง
เมื่อ plot แกน x ถึงค่า 1000 ก็จะหยุด plot 
//konkarhoon.blogspot.com


















-ใช้ Xcos ของ scilab plot กราฟแรงดัน analog จาก Arduino




1 ความคิดเห็น:

  1. plot2d3('gnn',i,answery); ขอสอบถามได้มั้ยคะว่า ตรง 'gnn' คืออะไรหรอคะ

    ตอบลบ