เขียนโปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic
ตัวอย่างง่ายๆซึ่งจะใช้ช่องทางติดต่อการสื่อสารผ่านพอร์ทอนุกรม (Series Port) จากคอมพิวเตอร์ไปที่ Arduino UNO R3 เพื่อทำการควบคุมการทำงาน เปิด/ปิด หลอดไฟ LED ที่เชื่อมต่อกับขา 13 ซึ่งมาพร้อมกับบอร์ดอยู่แล้ว โดยใช้ Visual Studio 2015 เขียนโปรแกรมด้วยภาษา Visual Basic ทำ GUI (graphical user interface) ซึ่งเป็นการติดต่อกับผู้ใช้โดยใช้ภาพสัญลักษณ์ (Window Application) และสามารถนำไปติดตั้งในคอมพิวเตอร์ ระบบปฏิบัติการ Windows เครื่องอื่นๆได้
หลักการทำงานของการติดต่อนี้ จะเป็นการติดต่อด้วย สตริง (String) หรือ Character sequence เป็นประเภทข้อมูลแบบข้อความที่ประกอบไปด้วยหลายตัวอักษร เป็นการส่งข้อมูลเป็นแบบข้อความ โดยสื่อสารผ่านพอร์ทอนุกรม (Series Port) ระหว่าง Window Application กับ Arduino UNO R3
อุปกรณ์ที่ใช้
ขั้นตอนการทํางาน
1 : โปรแกรมแรก กับ Arduino UNO R3
โดยศึกษา ขั้นตอนการทำงาน จากลิงค์บทความ ด้านล่าง
2 : อัพโหลดโค้ดให้บอร์ด Arduino
การทำงานของโค้ดนี้คือ รอรับคำสั่งจาก Window Application ภาษา Visual Basic โดย ถ้ารับค่า เป็น on ให้ LED ติด และ ถ้ารับค่ามาเป็น off ให้ LED ดับ
เปิดโปรแกรม Arduino IDE เขียนโปรแกรม หรือ Sketch และอัพโหลดโค้ด ด้วยโค้ดด้านล่างนี้
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
String readString;
String Q;
while (Serial.available()) {
delay(1);
if (Serial.available() > 0) {
char c = Serial.read();
if (isControl(c)) {
break;
}
readString += c;
}
Q = readString;
if (Q == "on") {
digitalWrite(13, HIGH);
}
if (Q == "off") {
digitalWrite(13, LOW);
}
}
}
เปิดหน้าต่าง Serial Monitor โดยไปที่ Tools -> Serial Monitor
ที่มุมขวาล่าง ของ Serial Monitor เลือกเป็น 9600 baud คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล คือ 9600 ตามที่เราเขียนโค้ดไว้ และ ด้านซ้ายหน้า 9600 baud ให้เลือกเป็น No line ending
พิมพ์ on แล้วคลิก Send ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ติด”
และพิมพ์ off แล้วคลิก Send ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ดับ” แสดงว่า โปรแกรมเปิดปิดไฟ LED ของ Arduino สําเร็จแล้ว
3 : โปรแกรมแรก VB.NET กับ Visual Studio 2015
โดยศึกษา ขั้นตอนการทำงาน จากลิงค์บทความ ด้านล่าง
4 : สร้าง Window Application เพื่อ ควบคุม Arduino
เปิดโปรแกรม Visual Studio 2015
สร้างโปรเจคสำหรับเขียนโค้ดภาษา Visual Basic ในตัวอย่างชื่อ LED_VB ไปที่ Common Controls ลาก ComboBox จาก Toolbox ไปยัง Form1
และ ลาก Button จาก Toolbox ไปยัง Form1
เปลี่ยนข้อความที่แสดง button1 โดยไปที่ Text เปลี่ยนเป็น ON
ลาก Button จาก Toolbox ไปยัง Form1 และ เปลี่ยนข้อความที่แสดง button2 โดยไปที่ Text เปลี่ยนเป็น OFF
เปลี่ยนขนาดของ Form1 โดยคลิกที่ Form1 แล้วไปที่ Size แก้เป็น 300,200
ไปที่ Components ลาก SerialPort จาก Toolbox ไปวางบริเวณ Form1 แล้ว serialPort1 จะเพิ่มเข้ามาที่ด้านล่างของ Form1 โดยอัตโนมัติ
เลือกไปที่ Pointer และ ดับเบิ้ล คลิกที่ บริเวณ Form1
จะมีแท็ป Form1.cs เพิ่มเข้ามา ซึ่งส่วนนี้มีไว้สำหรับเขียนโค้ด เช่น เหตุการณ์ Form1_Load
ที่ส่วนบนสุดของโค้ด ประกาศตัวแปร MyPorts ด้วยโค้ดด้านล่าง
Dim MyPorts As Array
ที่ เหตุการณ์ Form1_Load เขียนโค้ดดังนี้
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
MyPorts = IO.Ports.SerialPort.GetPortNames
ComboBox1.Items.AddRange(MyPorts)
ComboBox1.SelectedItem = ComboBox1.Items(0)
SerialPort1.BaudRate = (9600)
SerialPort1.ReadTimeout = (2000)
SerialPort1.WriteTimeout = (2000)
Catch ex As Exception
End Try
End Sub
คลิก Save All
ทดสอบการทำงานโดย ไปที่ Debug -> Start Debugging
เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปยังบอร์ด Arduino UNO R3 (ที่โหลดโค้ดตามขั้นตอนที่ 2 เรียบร้อยแล้ว)
ตรวจสอบที่ Ports (COM & LPT) จะพบ Arduino Uno ในตัวอย่างเป็น (COM3) โดย (แต่ละเครื่องอาจจะไม่เหมือนกัน)
ที่ comboBox1 จะแสดงข้อความ COM3 แสดงว่า Window Application ที่เราเขียนอยู่ ติดต่อสื่อสารกับ บอร์ด Arduino UNO R3 ได้แล้ว
หยุดทดสอบการทำงาน โดย คลิก Stop Debugging
กลับไปที่ Form1.cs [Design] ดับเบิ้ล คลิก ที่ button1 (แสดงข้อความเป็น ON)
เขียนโค้ดที่ button1_Click ดังนี้
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SerialPort1.Open()
SerialPort1.WriteLine("on")
SerialPort1.Close()
End Sub
กลับไปที่ Form1.cs [Design] ดับเบิ้ล คลิก ที่ button2 (แสดงข้อความเป็น OFF) เขียนโค้ดที่ button2_Click ดังนี้
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
SerialPort1.Open()
SerialPort1.WriteLine("off")
SerialPort1.Close()
End Sub
กลับไปที่ Form1.cs [Design] ดับเบิ้ล คลิก ที่ ComboBox1
เขียนโค้ดที่ ComboBox1_SelectedIndexChanged ดังนี้
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Try
SerialPort1.PortName = ComboBox1.Text
Catch ex As Exception
End Try
End Sub
คลิก Save All
ทดสอบการทำงานโดย ไปที่ Debug -> Start Debugging
คลิกที่ button1 (ON) ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ติด”
คลิกที่ button2 (OFF) ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ดับ” แสดงว่า โปรแกรมควบคุม Microcontroller Arduino ด้วย Visual Basic สําเร็จแล้ว