DIY Arduino ProjectAugust 6th, 2017
บทความนี้จะสอนวิธีการเขียนโปรแกรมพื้นฐานสุดๆเป็นโปรแกรมไฟกระพริบ (Blink) ซึ่งถือว่าเป็นโปรแกรมแรกที่ผู้เริ่มต้นควรฝึกเขียนครับ
โดยครั้งนี้เราจะใช้ Arduino UNO R3 เป็นบอร์ดทดลองโดยจะใช้ pin 13 ในการส่งสัญญาณ เนื่องจากมี LED built-in อยู่ทำให้เราไม่จำเป็นต้องต่อ LED ภายนอกก็ได้
อันดับแรก ให้เราลงโปรแกรมเพื่อใช้เขียนชุดคำสั่งลงบน Arduino ใครยังไม่มีให้ไป ดาวโหลดและติดตั้ง Arduino IDE ก่อนจากเวปไซต์ของ Arduino ครับ
หลังจากลงโปรแกรมเรียบร้อบแล้ว ให้เสียบสาย usb เพื่อเชื่อม Arduino และ คอมพิวเตอร์เข้าด้วยกันและทำตามขั้นตอนข้างล่างดังนี้
หลังจากเปิดโปรแกรมขึ้นมา เลือกพอร์ตการเชื่อมต่อให้ตรงกับ usb ที่เราเสียบ Arduino ไว้
ไปที่ Tools > Port:…
ถ้าใครไม่รู้ว่า port Arduino คืออันไหน ให้ออกจากโปรแกรม ถอดสาย usb แล้วโปรแกรมใหม่ จากนั้นก็เข้าไปดูว่ามี port อะไรอยู่บ้าง หลังจากนั้น ปิดโปรแกรมเสียบ usb แล้วเปิดอีกครั้ง port ที่เพิ่มเข้ามาจากตอนไม่เสียบ usb ก็คือ พอร์ตของ Arduino นั่นเองครับ
ส่วนที่ Tools > Board
ให้เลือก Arduino/Genuino Uno
จริงๆแล้วเจ้าตัว Arduino IDE จะมีโปรแกรมพื้นฐานเตรียมให้เราอยู่แล้ว เราสามารถโหลด source code ออกมาใช้งานได้เลย
ไปที่ File > Examples > 01. Basics > Blink
Arduino จะโหลด source code ขึ้นมาหลังจากนั้น ให้เรา click สัญลักษณ์ ลูกศรชี้ขวา เพื่อทำการ upload โปรแกรมไปสู่ board (วงกลมสีแดงตามรูปข้างล่าง)
หลังจาก upload เรียบร้อย LED built-in สีเขียวๆบนบอร์ด ก็จะกระพริบตามที่เราสั่งแล้ว :)
การเขียนโปรแกรมใน Arduino IDE จะมี function หลักที่จำเป็นอยู่สองส่วนด้วยกันคือ setup()
และ loop()
โดย setup จะถูกเรียกครั้งเดียวในตอนเริ่มต้น และ loop จะถูกวนเรียกไปเรื่อยตลอดการทำงาน
1void setup() {2pinMode(LED_BUILTIN, OUTPUT);3}
function pinMode จะใช้ในการ set ค่าของ pin แต่ละตัวว่าเป็น mode อะไร อย่างเช่น OUTPUT (ส่งสัญญาณออก) และ INPUT (อ่านสัญญาณเข้า)
โดย syntax การใช้งานเป็นดังนี้ pinMode(<ขา pin>, <โหมด>)
ในที่นี้เรา set ให้ขา 13 (LED_BUILTIN) เป็นขาส่งสัญญาณออก
LED_BUILTIN เป็นค่าคงที่ที่ตั้งไว้โดยตัวโปรแกรม ในที่นี้เราเลือกบอร์ด Arduino UNO ซึ่งจะได้ค่าออกมาเป็น 13 ถ้าใครจะเขียนเลข 13 ลงไปแทน LED_BUILTIN ก็ได้เหมือนกัน การทำงานจะไม่แตกต่างครับ
ประกอบไปด้วยคำสั่ง 2 คำสั่ง
digitalWrite(<pin>, <HIGH/LOW>)
ใช้ส่งค่า เปิด/ปิด (HIGH/LOW) ไปยัง pin ที่กำหนดdelay(milliseconds)
ใช้หน่วงเวลาตามจำนวน มิลลิวินาทีที่กำหนดการทำงานของตัวโปรแกรม
1void loop() {2digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)3delay(1000); // wait for a second4digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW5delay(1000); // wait for a second6}
หลังจากนั้นโปรแกรมก็จะวนกลับไปทีบรรทัดที่ 2 ใหม่ไปเรื่อยๆ ทำให้เราเห็นหลอดไฟกระพริบต่อเนื่อง ใครเห็นว่ากระพริบช้าไปก็อาจไปลองแก้ไขตัวเลข 1000 ให้น้อยลง หลอดไฟก็จะกระพริบเร็วขึ้นครับ
เนื่องจาก Buiit-in LED ของ Arduino UNO ต่ออยู่กับ pin ที่ 13 ทำให้เราสามารถนำวงจร led ภายนอกมาต่อเพื่อให้ไฟกระพริบไปพร้อมกันกับ built-in ได้เลยดังนี้
เนื่องจาก Arduino UNO จะจ่ายไฟออกที่ 5V และ led ส่วนใหญ่จะทนไฟได้ที่ 3v เราจึงจำเป็นต้องใช้ตัวต้านทานเพื่อลดแรงดันที่จะเข้า led เพื่อป้องกันหลอดขาด ถ้าใครมี LED ที่ทนไฟได้ 5v อยู่แล้วก็สามารถต่อขั้วบวกกับ pin 13 และขาลบลง ground ได้เลย ในที่นี้เราจะต่อวงจรเพื่อให้ LED 3v กระพริบนะครับ
สอบถาม ติดชม เสนอแนะ ได้ที่ช่อง comment ด้านล่างเลยครับ