บทที่ 5: เริ่มกันที่ “Hello World”
โดยพื้นฐานของการ ฝึกเขียนโปรแกรมคอมพิวเตอร์หรือไมโครคอนโทรลเลอร์ เรามักจะเริ่มต้นด้วยโปรแกรม “Hello World” ก่อนเป็นอันดับแรก ซึ่งจะเป็นการทดสอบเครื่องมือที่เราใช้เขียนโปรแกรมและคอมไพเลอร์ว่าทำงานถูกต้องหรือไม่ และตัวฮาร์ดแวร์ซึ่งก็คือบอร์ด Arduino Learning Kit ว่าสามารถทำงานและติดต่อกับคอมพิวเตอร์ที่ใช้เขียนโปรแกรมได้ไม่มีปัญหา เอาละ มาเริ่มเขียนโปรแกรมกันเลยดีกว่าครับ โดยทำตามขั้นตอนต่าง ๆด้านล่างไปพร้อมกันเลยนะครับ
-
ติดตั้ง Arduino Uno เข้ากับบอร์ด Arduino Learning Kit จากนั้นต่อสาย USB ระหว่างบอร์ดเข้ากับพอร์ต USB ของคอมพิวเตอร์ ซึ่งจะทำหน้าที่ เป็นทั้งสายอัปโหลด โปรแกรมและดีบัคกมอนิเตอริ่ง ในการทดลองนี้เราไม่จำเป็นที่จะต้องเสียบ Adapter 12VDC ให้กับบอร์ด เพราะกระแสไฟที่มาจากสาย USB ของคอมพิวเตอร์เพียงพอต่อการทำงานของบอร์ดแล้ว เมื่อต่อเสร็จแล้ว ไฟหน้าจอ LCD16x2 จะสว่างขึ้น
-
เปิดโปรแกรม Arduino IDE ขึ้นมา จากนั้นเลือกชนิดของบอร์ดเป็น Arduino Uno
-
ก่อนทำการเขียนโปรแกรม ให้เซ็ตค่า Arduino IDE โดยให้แสดงบรรทัดที่หน้าต่าง Editor
ทั้งนี้เพื่อให้ง่ายในการตรวจสอบและอธิบายในการเรียนการสอนในครั้งนี้ โดยให้คลิกที่ File -> Preferences แล้วคลิกที่ Display line numbers ตามรูปด้านล่าง จากนั้นคลิก OK

-
ทำการเลือกพอร์ต Arduino Uno ที่คอมพิวเตอร์มองเห็น ให้คลิกที่ Tools -> Port
ในรูปด้านบนจะเห็นว่าคอมพิวเตอร์จะมองเห็นพอร์ต Arduino Uno เป็น COM3 แต่ถ้าคอมพิวเตอร์ไม่เจอพอร์ตใดใดเลย ให้ตรวจสอบดูสาย USB ว่าได้ทำการเสียบเรียบร้อยดีหรือไม่ แต่ถ้ายังหาไม่เจออีกให้ตรวจสอบว่า Arduino IDE ได้ทำการติดตั้ง USB driver ไว้หรือไม่ ถ้ายังไม่ได้ติดตั้งหรือติดตั้งไม่สมบูรณ์ ให้ทำการติดตั้งใหม่อีกครั้ง (ดูได้จากหัวข้อ การติดตั้ง USB driver ให้กับ Arduino IDE ด้านท้ายของคู่มือ)
-
เขียนโปรแกรมตามตัวอย่างรูปด้านล่าง
ขออธิบายในส่วนของโค้ดตามตัวอย่างด้านบนสักเล็กน้อย เพื่อเป็นพื้นฐานในการเขียนโปรแกรมในหัวข้อต่อ ๆไป ส่วนผู้ที่มีพื้นฐานในการเขียนโปรแกรม Arduino ภาษา C# อยู่แล้ว ให้ข้ามไปได้เลยครับ
แต่เนื้อหาในหนังสือเล่มนี้จะไม่ลงไปในพื้นฐานของการเขียนโปรแกรมภาษาซี ดังนั้นผู้อ่านต้องมีความรู้ความเข้าใจเบื้องต้นของภาษาซีมาแล้วบ้างไม่มากก็น้อย
โครงสร้างของโค้ด Arduino C# จะมีส่วนประกอบอยู่ 2 ส่วนหลัก ๆ ซึ่งขาดส่วนใดส่วนหนึ่งไปไม่ได้ นั่นคือฟังก์ชัน setup (บรรทัดที่ 1-4) และฟังก์ชัน loop(บรรทัดที่ 6-10)
ฟังก์ชัน setup เป็นฟังก์ชันที่ตัว Arduino จะเข้ามาทำงานเป็นฟังก์ชันแรก และทำงานครั้งเดียวหลังจากบอร์ดเริ่มทำงานหรือหลังจากทำการรีเซ็ตบอร์ด ดังนั้นเมื่อต้องการให้ Arduino รันคำสั่งใดคำสั่งหนึ่งเพียงครั้งเดียว เช่นคำสั่งการกำหนดการทำงานของ pin ว่าให้เป็นอินพุตหรือเอาต์พุต หรือคำสั่งการกำหนดค่า initial หรือกำหนดค่าเริ่มต้นต่าง ๆ ก็จะถูกนำมาวางไว้ในฟังก์ชัน setup
ฟังก์ชัน loop เป็นฟังก์ชันที่ตัว Arduino จะทำต่อจากฟังก์ชัน setup และจะทำงานวนซ้ำอยู่ในฟังก์ชันนี้ตลอดชีวิต ถ้าไม่เกิดการค้างหรือเกิดการรีเซ็ตบนตัว Arduino เสียก่อน
กลับมาดูในส่วนรายละเอียดของโค้ดด้านบนอีกครั้ง ในบรรทัดที่ 3 คำสั่ง Serial.begin(9600) ที่อยู่ในฟังก์ชัน setup เป็นการกำหนดอัตราความเร็วให้กับพอร์ตอนุกรม(Serial Port) หรือที่เราเรียกกันว่าค่า baud rate ซึ่งกำหนดไว้ที่ 9600 bit/second
บรรทัดที่ 8 คือการส่งข้อความสตริง “Hello Word” ออกไปทาง Serial Port โดยใช้คำสั่ง Serial.println(“Hello World”); จากนั้นบรรทัดที่ 9 ให้หน่วงเวลาเป็นระยะเวลา 1 วินาที ด้วยคำสั่ง delay(1000); โดยค่าที่อยู่ในฟังก์ชัน delay จะเป็นหน่วย millisecond (1000 mSec = 1 Sec )
-
ทำการ save sketch หรือ save โค้ดที่ได้เขียนมา โดยเมื่อคลิกปุ่มคอมไพล์โค้ด Arduino IDE จะให้ทำการ save ให้อัตโนมัติ
-
ทำการ upload โค้ดที่ผ่านการคอมไพล์แล้ว เข้าไปยังบอร์ด Arduino ถ้าการ upload เสร็จสมบูรณ์ ที่มุมซ้ายด้านล่างของหน้าต่าง sketch จะขึ้นข้อความคำว่า “Done uploading”

-
เปิดหน้าต่าง Serial Monitor คลิกที่ Tools -> Serial Monitor
หลังจากเปิดหน้าต่าง Serial Monitor ขึ้นมาแล้วให้เลือก Baud Rate ตามที่เราได้เขียนโปรแกรมไว้ ซึ่งก็คือ 9600

-
ดูผลการรันของโปรแกรมจากหน้าจอ Serial Monitor จะเห็นได้ว่า จะมีข้อความ “Hello Word” พิมพ์ออกมาทุก ๆ 1วินาที
แบบฝึกหัดสำหรับทบทวนความเข้าใจ
-
ใน sketch ที่ผ่านมาให้ทดลองเปลี่ยนค่า baud rate เป็นค่า 19200 ใน แล้วดูค่าใน Serial Monitor ว่าให้ผลเป็นอย่างไง และถ้าไม่มีค่าข้อความใดใดปรากฏขึ้นมา วิธีแก้ไขให้ข้อความปรากฏขึ้นมาเหมือนการทดลองข้างต้น ทำอย่างไร
-
ใน sketch ที่ผ่านมาบรรทัดที่ 8 ให้ลองเปลี่ยนคำสั่ง จาก Serial.println เป็น Serial.print ดูผลความแตกต่าง และอธิบายความแตกต่างระหว่างสองคำสั่งดังกล่าว












Leave a Reply