นี่คือโปรเจคพื้นฐานสำหรับมือใหม่หัดขับที่กำลังก้าวเข้าสู่โลก Arduino ครับน้อง
ทำไมต้องทำ?
เป้าหมายของโปรเจคนี้คือการทำให้ LED กะพริบแบบฉลาดๆ ด้วย Arduino ครับ การกะพริบก็แค่เปิด-ปิด LED นั่นแหละ มันก็เหมือนกับการเปิด-ปิดสวิตช์ไฟนั่นเอง แล้วทำไมเราไม่ทำให้มันง่ายขึ้นไปอีกล่ะ? ถ้าเรามีคนมาคอยสั่งเปิด-ปิด LED ให้ล่ะ? นั่นแหละครับ Arduino คือตัวนั้น มันจะมาควบคุมการกะพริบของ LED แบบที่ฉลาดกว่าที่เราทำเองเยอะเลย การตั้งค่าการกะพริบทั้งหมดขึ้นอยู่กับดีเลย์ (delay) ที่โปรแกรมเมอร์กำหนดให้ครับ
ทำยังไง?
ทีนี้เรามาดูกันดีกว่าว่าจะทำให้มันเกิดขึ้นได้ยังไง
ขั้นแรกสุดเลยคือไปหยิบอุปกรณ์มาก่อน อุปกรณ์ที่ต้องใช้มีดังนี้: LED(1), Arduino UNO(1), ตัวต้านทาน (Resistor) 221 โอห์ม(1) [จะใช้ค่าอื่นก็ได้ตามสะดวก], สายจัมเปอร์ (Jumper wires)(1), บอร์ดทดลอง (Bread board)(1). เราไม่ได้พูดถึงแหล่งจ่ายไฟเพิ่มเติมนะ เพราะเราสามารถใช้ไฟ 5V จากพอร์ต USB ที่ต่อกับคอมพิวเตอร์ได้เลย ทั้งเพื่ออัพโหลดโค้ดและจ่ายไฟให้บอร์ด หรือจะใช้แบตเตอรี่จ่ายไฟแทน USB ก็ได้ครับ
เมื่อรวบรวมอุปกรณ์ครบแล้ว ก็ต่อวงจรตามแผนภาพด้านล่างนี้เลย

เสียบขาสั้นของ LED เข้าที่ขา GND (กราวด์) ส่วนขายาวให้ต่อเข้ากับดิจิตอลพินหมายเลข '8' ตามโค้ดที่เราจะใช้ น้องสามารถใช้ดิจิตอลพินอื่นก็ได้ แค่ต้องเปลี่ยนเลข '8' ในโค้ดให้ตรงกันด้วย อย่าลืมใส่ตัวต้านทานระหว่างขาบวกของ LED กับขาเอาต์พุตของ Arduino ด้วยนะ เดี๋ยวไฟเกิน LED ไหม้ได้! จำไว้ ตัวต้านทานต่อขาไหนก่อนหลังก็ได้ ใช้บอร์ดทดลองและสายจัมเปอร์ช่วยต่อวงจรทั้งหมดนี้ให้เรียบร้อย
หรือถ้าง่วงไม่อยากต่อวงจรภายนอก น้องสามารถทำให้ LED ที่ติดมากับบอร์ด Arduino เองกะพริบได้เลย โดยเปลี่ยนหมายเลขพินในโค้ดเป็น '13' หรือ 'BUILT_IN' (LED นี้ต่อกับพิน 13 อยู่ภายในบอร์ดแล้ว)
ขั้นต่อไปคือโปรแกรมไมโครคอนโทรลเลอร์ชิปใน Arduino ครับ
โค้ดสำหรับทำให้ LED กะพริบมีหน้าตาดังนี้:
ได้โค้ดมาแล้ว ก็ต่อ Arduino เข้ากับคอมพิวเตอร์ผ่านพอร์ต USB เลือกประเภทบอร์ดและหมายเลข COM พอร์ตในซอฟต์แวร์ จากนั้นก็กด verify แล้วตามด้วย upload ครับ แล้วรอดูความอัศจรรย์ที่เกิดขึ้นบน LED ของน้องได้เลย
ข้อมูลเทคนิคแบบจัดเต็ม
มากกว่าแค่ "กะพริบ" ธรรมดา โปรเจคนี้พาน้องไปเจาะลึกหลักการของ PWM (Pulse-Width Modulation) และการเปลี่ยนผ่านของจังหวะเวลาแบบดิจิทัล
พื้นฐานสัญญาณภาพแบบมีลอจิกควบคุม
- เขียนสคริปต์กำหนดช่วงเวลา: Arduino ควบคุมสถานะของขา Digital (เช่น ขา 13) ฟังก์ชัน
delay()มาตรฐานเป็นวิธีง่ายๆ ในการควบคุมเวลา แต่มันจะบล็อกการทำงานของโค้ดอื่นทั้งหมด ถ้าอยากอัพเลเวลไปทำอะไรที่เจ๋งกว่านี้ น้องสามารถเปลี่ยนไปใช้โค้ดแบบ non-blocking ที่อาศัยmillis()ได้เลย วิธีนี้ทำให้ LED กะพริบได้ตรงเวลาเป๊ะๆ ในขณะที่ Arduino ก็ทำงานอื่นๆ ไปพร้อมกันได้ เช่น อ่านค่าจากเซนเซอร์ หรือตอบสนองการกดปุ่ม - เมทริกซ์ปรับความสว่างด้วย PWM: ถ้าอยากได้เอฟเฟกต์แบบ LED "หายใจ" ที่เนียนๆ น้องสามารถใช้ฟังก์ชัน
analogWrite()บนขาที่มีสัญลักษณ์ PWM (~) ได้ ฟังก์ชันนี้ใช้หลักการ Pulse-Width Modulation โดยจะสลับเปิด-ปิดขาด้วยความถี่สูงมาก (490Hz บนบอร์ด Arduino ส่วนใหญ่) การปรับอัตราส่วนระหว่างเวลาที่เปิดกับเวลาที่ปิด (หรือที่เรียกว่า Duty Cycle) จะทำให้เราจำลองการเปลี่ยนแปลงแรงดันแบบอนาล็อกได้อย่างมีประสิทธิภาพ และควบคุมความสว่างของ LED ในสายตามนุษย์เราได้นั่นเอง
การสร้างต้นแบบ
- ผ่านการทดสอบด้วย Arduino IDE: โปรเจคนี้ถูกปรับแต่งเพื่อความเสถียร 100% ด้วย Arduino IDE ตัวเป็นทางการ เป็นก้าวแรกที่ชัดเจนและน่าเชื่อถือสำหรับน้องๆ ทุกคนที่กำลังก้าวเข้าสู่โลกของระบบสมองกลฝังตัว
จัดไปวัยรุ่น! สู้งานนะน้อง ห้ามช็อตนะตัวนี้