เริ่มเขียนโปรแกรมแรกกับ Arduino UNO R3

บทความนี้จะสอนวิธีการเขียนโปรแกรมพื้นฐานสุดๆเป็นโปรแกรมไฟกระพริบ (Blink) ซึ่งถือว่าเป็นโปรแกรมแรกที่ผู้เริ่มต้นควรฝึกเขียนครับ

โดยครั้งนี้เราจะใช้ Arduino UNO R3 เป็นบอร์ดทดลองโดยจะใช้ pin 13 ในการส่งสัญญาณ เนื่องจากมี LED built-in อยู่ทำให้เราไม่จำเป็นต้องต่อ LED ภายนอกก็ได้

อุปกรณ์สำหรับ built-in LED blink

วิดิโอตัวอย่างการทำงานของ blink

เตรียมโปรแกรม Arduino IDE

อันดับแรก ให้เราลงโปรแกรมเพื่อใช้เขียนชุดคำสั่งลงบน Arduino ใครยังไม่มีให้ไป ดาวโหลดและติดตั้ง Arduino IDE ก่อนจากเวปไซต์ของ Arduino ครับ
หลังจากลงโปรแกรมเรียบร้อบแล้ว ให้เสียบสาย usb เพื่อเชื่อม Arduino และ คอมพิวเตอร์เข้าด้วยกันและทำตามขั้นตอนข้างล่างดังนี้

หลังจากเปิดโปรแกรมขึ้นมา เลือกพอร์ตการเชื่อมต่อให้ตรงกับ usb ที่เราเสียบ Arduino ไว้
ไปที่ “Tools” > “Port:…”

ถ้าใครไม่รู้ว่า port Arduino คืออันไหน ให้ออกจากโปรแกรม ถอดสาย usb แล้วโปรแกรมใหม่ จากนั้นก็เข้าไปดูว่ามี port อะไรอยู่บ้าง หลังจากนั้น ปิดโปรแกรมเสียบ usb แล้วเปิดอีกครั้ง port ที่เพิ่มเข้ามาจากตอนไม่เสียบ usb ก็คือ พอร์ตของ Arduino นั่นเองครับ

ส่วนที่ Tools > Board ให้เลือก “Arduino/Genuino Uno”

เขียนโปรแกรมเพื่อสั่งให้หลอด LED กระพริบ

จริงๆแล้วเจ้าตัว Arduino IDE จะมีโปรแกรมพื้นฐานเตรียมให้เราอยู่แล้ว เราสามารถโหลด source code ออกมาใช้งานได้เลย
ไปที่ File > Examples > 01. Basics > Blink

Arduino จะโหลด source code ขึ้นมาหลังจากนั้น ให้เรา click สัญลักษณ์ ลูกศรชี้ขวา เพื่อทำการ upload โปรแกรมไปสู่ board (วงกลมสีแดงตามรูปข้างล่าง)

หลังจาก upload เรียบร้อย LED built-in สีเขียวๆบนบอร์ด ก็จะกระพริบตามที่เราสั่งแล้ว 🙂

หลอดสีเขียวกระพริบตามคำสั่งโปรแกรม blink

อธิบายการทำงานของโปรแกรม blink

การเขียนโปรแกรมใน Arduino IDE จะมี function หลักที่จำเป็นอยู่สองส่วนด้วยกันคือ setup() และ loop()

โดย setup จะถูกเรียกครั้งเดียวในตอนเริ่มต้น และ loop จะถูกวนเรียกไปเรื่อยตลอดการทำงาน

ส่วน void setup()

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

function pinMode จะใช้ในการ set ค่าของ pin แต่ละตัวว่าเป็น mode อะไร อย่างเช่น OUTPUT (ส่งสัญญาณออก) และ INPUT (อ่านสัญญาณเข้า)
โดย syntax การใช้งานเป็นดังนี้ pinMode(<ขา pin>, <โหมด>)
ในที่นี้เรา set ให้ขา 13 (LED_BUILTIN) เป็นขาส่งสัญญาณออก

LED_BUILTIN เป็นค่าคงที่ที่ตั้งไว้โดยตัวโปรแกรม ในที่นี้เราเลือกบอร์ด Arduino UNO ซึ่งจะได้ค่าออกมาเป็น 13 ถ้าใครจะเขียนเลข 13 ลงไปแทน LED_BUILTIN ก็ได้เหมือนกัน การทำงานจะไม่แตกต่างครับ

ส่วน void loop()

ประกอบไปด้วยคำสั่ง 2 คำสั่ง

  1. digitalWrite(<pin>, <HIGH/LOW>)
    ใช้ส่งค่า เปิด/ปิด (HIGH/LOW) ไปยัง pin ที่กำหนด
  2. delay(milliseconds)
    ใช้หน่วงเวลาตามจำนวน มิลลิวินาทีที่กำหนด

การทำงานของตัวโปรแกรม

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}
  • บรรทัดที่ 2 – สั่งให้จ่ายไฟไปยัง pin 13 (หลอดไฟเปิด)
  • บรรทัดที่ 3 – หน่วงเวลา 1000 มิลลิวินาที หรือ 1 วินาที
  • บรรทัดที่ 4 – สั่งให้เลิกจ่ายไฟไปยัง pin 13
  • บรรทัดที่ 5 – หน่วงเวลา 1 วินาที

หลังจากนั้นโปรแกรมก็จะวนกลับไปทีบรรทัดที่ 2 ใหม่ไปเรื่อยๆ ทำให้เราเห็นหลอดไฟกระพริบต่อเนื่อง ใครเห็นว่ากระพริบช้าไปก็อาจไปลองแก้ไขตัวเลข 1000 ให้น้อยลง หลอดไฟก็จะกระพริบเร็วขึ้นครับ

ต่อโปรแกรม Blink กับ LED ภายนอก

เนื่อยง Buiit-in LED ของ Arduino UNO ต่ออยู่กับ pin ที่ 13 ทำให้เราสามารถนำวงจร led ภายนอกมาต่อเพื่อให้ไฟกระพริบไปพร้อมกันกับ built-in ได้เลยดังนี้

อุปกรณ์สำหรับเชื่อต่อ blink กับวงจรภายนอก

เนื่องจาก Arduino UNO จะจ่ายไฟออกที่ 5V และ led ส่วนใหญ่จะทนไฟได้ที่ 3v เราจึงจำเป็นต้องใช้ตัวต้านทานเพื่อลดแรงดันที่จะเข้า led เพื่อป้องกันหลอดขาด ถ้าใครมี LED ที่ทนไฟได้ 5v อยู่แล้วก็สามารถต่อขั้วบวกกับ pin 13 และขาลบลง ground ได้เลย ในที่นี้เราจะต่อวงจรเพื่อให้ LED 3v กระพริบนะครับ

หลังจากต่อวงจรตามข้างบนเรียบร้อย วงจร external LED ก็จะกระพริบตาม built-in LED แล้วครับ