1. Blinky The Series [FunBasic I/O]

Posted by | May 10, 2015 | Arduino, Embeded System, Tutorial | No Comments
g17223

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 การใช้งานไมโครคอนโทรลเลอร์แล้วครับ

สรุปสิ่งที่ได้เรียนรู้ที่ผ่านมา

    1. รู้จักการควบคุม LED ด้วย คำสั่ง digitalWrite( pin, [HIGH,LOW] )
    2. รู้จักการควบคุมจังหวะการกระพริบ การคำสั่ง delay( time )
    3. รู้จักการใช้ for-loops
    4. สร้างชุดคำสั่ง หรือ Function ได้

About chang

ชื่อ “ช้าง” ส่วนมากเขาจะเรียกว่า “พี่ช้าง” แล้ว มีความสนใจทางเทคโนโลยีทางคอมพิวเตอร์ อิเล็กทรอนิกส์ และ หุ่นยนต์ เป็นทั้งนักคิด นักประดิษฐ์ ชอบทดลองเล่น จนเดี่ยวนี้รู้สึกว่าจะเล่นมากกว่ามืออาชีพไปสักแล้ว