เปิดปิดไฟ LED ของ Arduino ด้วยภาษา C#

ตัวอย่างง่ายๆซึ่งจะใช้ช่องทางติดต่อการสื่อสารผ่านพอร์ทอนุกรม (Series Port) จากคอมพิวเตอร์ไปที่ Arduino UNO R3 เพื่อทำการควบคุมการทำงาน เปิด/ปิด หลอดไฟ LED ที่เชื่อมต่อกับขา 13 ซึ่งมาพร้อมกับบอร์ดอยู่แล้ว โดยใช้ Visual Studio 2015 เขียนโปรแกรมด้วยภาษา C# ทำ 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 ภาษา C# โดย ถ้ารับค่า เป็น 1 ให้ LED ติด และ ถ้ารับค่ามาเป็น 0 ให้ LED ดับ

เปิดโปรแกรม Arduino IDE เขียนโปรแกรม หรือ Sketch และอัพโหลดโค้ด ด้วยโค้ดด้านล่างนี้

 char My_Input;

 void setup()
 {
   pinMode(13, OUTPUT);
   Serial.begin(9600);
 }

 void loop()
 {
   My_Input = Serial.read();
   switch (My_Input)
   {
     case'1':
       digitalWrite(13, HIGH);
       break;
     case'0':
       digitalWrite(13, LOW);
       break;
   }
 }


3 : โปรแกรมแรก กับ Visual Studio 2015


โดยศึกษา ขั้นตอนการทำงาน จากลิงค์บทความ ด้านล่าง


4 : สร้าง Window Application เพื่อ ควบคุม Arduino


เปิดโปรแกรม Visual Studio 2015


สร้างโปรเจคสำหรับเขียนโค้ดภาษา C# ในตัวอย่างชื่อ LED_App


ไปที่ Common Controls ลาก ComboBox จาก Toolbox ไปยัง Form1


และ ลาก Button จาก Toolbox ไปยัง Form1


เปลี่ยนข้อความที่แสดง button1 โดยไปที่ Text เปลี่ยนเป็น Connect


ไปที่ Components ลาก SerialPort จาก Toolbox ไปวางบริเวณ Form1 แล้ว serialPort1 จะเพิ่มเข้ามาที่ด้านล่างของ Form1 โดยอัตโนมัติ


กลับไปที่ Form1.cs [Design] เลือกไปที่ Pointer และคลิกที่ปุ่ม button1 (ที่แสดงข้อความ Connect)


จะมีแท็ป Form1.cs เพิ่มเข้ามา ซึ่งส่วนนี้มีไว้สำหรับเขียนโค้ด


ที่ส่วนบนสุดของโค้ด เรียกใช้ System.IO.Ports ด้วยโค้ดด้านล่าง

using System.IO.Ports;

ที่ public Form1 เขียนโค้ดดังนี้

public Form1()
 {
     InitializeComponent();
     String[] strPortNames = SerialPort.GetPortNames();
     foreach (string n in strPortNames)
     {
       comboBox1.Items.Add(n);
     }
     try
     {
      comboBox1.SelectedIndex = 0;
      comboBox1.Enabled = true;
      button1.Enabled = true;
     }
     catch
     {
      comboBox1.Text = "Unavailable";
     }
 }



คลิก Save All


ไปที่ Visual Studio 2015 ทดสอบการทำงานโดย ไปที่ Debug ->Start Debugging


ถ้าไม่ได้เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปยังบอร์ด Arduino UNO R3 หรือ มีปัญหาในการเชื่อมต่อ ที่ comboBox1 จะแสดงข้อความ Unavailable


หยุดทดสอบการทำงาน โดย คลิก Stop Debugging


ให้เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปยังบอร์ด Arduino UNO R3 (ที่โหลดโค้ดตามขั้นตอนที่ 2 เรียบร้อยแล้ว)

ตรวจสอบที่ Ports (COM & LPT) จะพบ Arduino Uno ในตัวอย่างเป็น (COM3)

ไปที่ Ports (COM & LPT) จะพบ Arduino Uno

แล้วทดสอบการทำงานอีกครั้ง โดย ไปที่ Debug ->Start Debugging ที่ comboBox1 จะแสดงข้อความ COM3 แสดงว่า Window Application ที่เราเขียนอยู่ ติดต่อสื่อสารกับ บอร์ด Arduino UNO R3 ได้แล้ว


กลับไปที่ Form1.cs [Design] เพิ่ม button2 ไปที่ Form1 แล้วแก้ไขให้แสดงข้อความเป็น ON

และที่ Enabled แก้ไขให้เป็น False คือเมื่อเริ่มต้นทำงานจะมองเห็น button2 แต่ไม่สามารถคลิกได้

เพิ่ม button3 ไปที่ Form1 แล้วแก้ไขให้แสดงข้อความเป็น OFF และ Enabled เป็น False


คลิกที่ button1 (Connect) เพื่อไปเขียนโค้ดที่ button1_Click ดังนี้

private void button1_Click(object sender, EventArgs e)
{
    serialPort1.PortName = comboBox1.SelectedItem + "";
    serialPort1.Open();
    button2.Enabled = true;
    button3.Enabled = true;
{


กลับไปที่ Form1.cs [Design]  คลิกที่ button2 (ON)


เพื่อไปเขียนโค้ดที่ button2_Click ดังนี้

private void button2_Click(object sender, EventArgs e)
{
    serialPort1.Write("1");
{


กลับไปที่ Form1.cs [Design]  คลิกที่ button3 (OFF) เพื่อไปเขียนโค้ดที่ button3_Click ดังนี้

private void button3_Click(object sender, EventArgs e)
 {
     serialPort1.Write("0");
 {


คลิก Save All แล้ว ทดสอบการทำงานโดย ไปที่ Debug -> Start Debugging


คลิกที่ button1 (Connect)


คลิกที่ button2 (ON)


ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ติด”


และ เมื่อคลิกที่ button3 (OFF)

ผลลัพธ์ : หลอดไฟ LED ที่เชื่อมต่อกับขา 13 แสดงผล “ดับ” แสดงว่า โปรแกรมเปิดปิดไฟ LED ของ Arduino ด้วยภาษา C# สําเร็จแล้ว