Blinking LED คือ ไฟกระพริบ การหัดเขียนโปรแกรม เราจะเริ่มต้นทดสอบการเขียนโปรแกรมง่าย ให้ได้ Output ออกมาอย่างรวดเร็ว เหมือนกับ ในทาง Software คอมพิวเตอร์ เราจะเขียนโปรแกรม “Hello World” ให้คอมพิวเตอร์ส่งข้อความออกมาทักทายทางจอภาพให้เร็วที่สุด เพื่อทดสอบว่าเราเริ่มจะเข้าใจการเขียนโปรแกรมแล้ว เซ็ทคอมไพล์เลอร์ เซ็ทบอร์ดถูกต้อง ผมเชื่อเลยว่ายังมีบางคน ต่อให้ พิมพ์ตาม ก้อยังมีอะไรสักอย่างที่ต้องผิคพลาดแน่ๆ เดี่ยวมาลองดูกัน
ก่อนจะทำไฟกระพริบกัน มารู้สิ่งแรกของการเขียนโปรแกรมบน Arduino ก่อนครับ การเขียนโปรแกรมบน Arduino จะเรียกว่า “sketch” (สะ-เคทช) เพราะว่าจริงๆ มันไม่เห็นรูปแบบการเขียนโปรแกรมแบบมาตราฐานนั้นสิ มันบอกเรานิดๆว่า โปรแกรมที่เราเขียนเป็นแบบร่างๆ อยู่นะ
โครงสร้างใน sketch
- ฟังก์ชั่น Setup() ทุกครั้งของการทำงาน ตั้งแต่จ่ายไฟ arduino จะทำงานตามคำสั่งที่อยู่ใน setup() เป็นส่วนแรก และ ทุกคำสั่งใน setup() ทำงานแค่ครั้งเดียวเท่านั้น ส่วนนี้จึงตั้งชื่อว่า setup หรือเอาไว้ตั้งค่านี้เอง
- ฟังก์ชั่น loop() หลังจากที่ทำงานส่วน setup() ,โปรแกรมใน sketch จะทำงานในฟังก์ชั่น loop() ตามชื่อ ตลอดการจ่ายไฟ arduino จะทำงานทุกคำสั่งที่อยู่ใน loop() วนไปเรื่อยๆ
<Lab 1> ไฟกระพริบ แบบเริ่มต้น (Blinking LED)
เริ่มกันเลยดีกว่าไฟกระพริบ พิมพ์ sketch หรือ จะเล่นผ่าน Web ก็ได้นะครับ ตอนนี้ ทางเวปเรา support ล่ะ ตามตัวอย่างข้างล่าง แล้วกดปุ่มคอมไพล์ (อยากให้พิมพ์เองนะครับ 😀 จะได้ชินกับการเขียนโปรแกรม)
ใครที่คอมไพล์ไม่ผ่าน ลองตรวจสอบคำสั่งอีกครั้ง การเขียนโปรแกรมบน Arduino ตัวเล็ก ตัวใหญ่มีผลนะครับ (Case Sensitive) คำสั่ง digitalwrite() ,DigitalWrite(), digitalWRITE() รูปแบบเหล่านี้ใช้ไม่ได้ ใช้ได้แค่ digitalWrite(pin, [HIGH,LOW] )
แบบทดสอบย่อย เพิ่มเติมไปลองทำดูเองนะครับ มาเจอความความท้าทายอันต่อไป
- สำหรับทดลองย้าย LED ให้ไปกระพริบที่ PIN อื่นดูครับ ลองดูว่าต้องทำอย่างไง
- ลองเปลี่ยนให้ไฟกระพริบ กระพริบช้าหรือเร็วขึ้นดูครับ
<Lab 2> สร้างไฟกระพริบมากกว่า 1 ดวง (Multiple Blinky )
สำหรับตอนนี้ เรามารู้จักการสร้าง ฟังก์ชั่นกันบ้าง สำหรับตอนที่ ผมหัดเขียนโปรแกรมใหม่ ผมก็สงสัยว่าเราจะสร้างฟังก์ชั่นกันไปทำไม เรามาดูการตัวอย่างนี้ เราจะเข้าใจว่าฟังก์ชั่นจะช่วยอะไรได้บ้าง
ในตัวอย่างนี้ ผมย้ายโค๊ดส่วนทำ”ไฟกระพริบ” มาสร้างเป็นฟังก์ชั่น Blinky() และ ยังสามารถส่งค่าตัวแปรผ่านฟังก์ชั่นได้อีกด้วย อย่างเช่นว่า เราอยากจะทำให้ไฟกระพริบ เร็วหรือ ช้าลง เหมือนแบบฝึกหัดที่ 2 เราก็ทำให้ฟังก์ชั่นนี้ ให้รับค่าตัวแปรการหน่วงเวลาได้
<Lab 3> สร้างไฟกระพริบเป็นชุดกัน (More Multiple Blinky)
ถ้าจะทำให้ไฟวิ่งเป็นชุด จะทำอย่างไง มาดูเทคนิดการใช้งาน for-loop กันครับ
มาถึงตอนนี้ คงได้ไอเดีย กับ นำ arduino มาเป็น Hardware ควบคุมกันแล้วนะครับ ถ้าเพื่อนๆ ทำมาถึงตรงนี้ ผมก้อขอบอกว่า ตอนนี้เราได้ข้ามส่วนที่ยากมาได้แล้ว และ เริ่มเข้าใจ concept การใช้งานไมโครคอนโทรลเลอร์แล้วครับ
สรุปสิ่งที่ได้เรียนรู้ที่ผ่านมา
- รู้จักการควบคุม LED ด้วย คำสั่ง digitalWrite( pin, [HIGH,LOW] )
- รู้จักการควบคุมจังหวะการกระพริบ การคำสั่ง delay( time )
- รู้จักการใช้ for-loops
- สร้างชุดคำสั่ง หรือ Function ได้