Sequence and Loops: The LED Chaser (ไล่ตามไฟ LED)
LED Chaser (หรือที่เรียกกันว่า Knight Rider sweep หรือ Cylon Eye) นี่แหละคือบทเรียนเปิดตัวที่เจ๋งสุดๆ สำหรับพลังของ for loops กับ arrays ใน C++ เมื่อการกะพริบ LED ดวงเดียวเริ่มน่าเบื่อ ก็ถึงเวลามาเรียนรู้วิธีกะพริบสิบดวงด้วยความเร็วสุดล้ำกันดีกว่า
โปรเจคนี้ทั้งสนุกและง่ายโคตรๆ เพราะสิ่งที่ต้องใช้ก็แค่ Arduino Uno หรือ Arduino Nano, LED สีเดียวกันหรือต่างสีก็ได้ แล้วก็สายจัมเปอร์นิดหน่อย จริงๆ แล้วเราต่อ LED กับ Arduino ได้เกือบ 10 ถึง 12 ดวงเลยนะ จะได้ผลงานที่ตื่นตาตื่นใจสมกับความพยายามของน้องๆ ไงล่ะ
หนีให้พ้นจาก "Spaghetti Code"
มือใหม่หลายคนอาจจะเขียนโค้ดไล่ไฟ 5 ดวงด้วยการเขียนโค้ดยาวเหยียด 30 บรรทัดแบบนี้: digitalWrite(3, HIGH); delay(50); digitalWrite(3, LOW); digitalWrite(4, HIGH);...
บอกเลยว่านี่คือวิธีที่ไม่มีประสิทธิภาพเอาเสียเลย! ถ้าน้องอยากเปลี่ยนค่า delay ล่ะก็ ต้องไปแก้ทีละจุดเป็นสิบที่แน่ะ!
พลังแห่ง Arrays
- เก็บข้อมูล: เก็บหมายเลขขา (pin) ไว้ใน integer array แบบนี้:
int pins[] = {2, 3, 4, 5, 6};. - The Loop: ใช้ลูปสั้นๆ แค่ 3 บรรทัดเท่านั้นเอง
for (int i=0; i<5; i++) { digitalWrite(pins[i], HIGH); delay(50); digitalWrite(pins[i], LOW); } - การวนซ้ำ: ลูปจะแทนค่า
i(0, 1, 2, 3) ลงในวงเล็บอย่างรวดเร็ว ทำให้การไล่ไฟทำงานได้สมบูรณ์แบบ ถ้าอยากให้ไฟวิ่งกลับไปกลับมา ก็แค่เพิ่มforloop อันที่สองให้นับถอยหลังจาก 4 กลับไป 0 (i--) เท่านั้นเอง ง่ายมั้ยล่ะ!
อุปกรณ์ที่ต้องใช้
- Arduino Uno/Nano: เครื่องยนต์ลำดับขั้นของเรา
- LED 5 ถึง 10 ดวง: สีอะไรก็ได้
- ตัวต้านทาน 220 โอห์ม (x10): ห้ามลืมเด็ดขาด! LED ทุกดวงต้องมีตัวต้านทานของตัวเอง ไม่เช่นนั้นขาของ Arduino อาจจะพังได้นะ ระวังตัวด้วย!
- เบรดบอร์ดใหญ่ๆ สักอัน
อย่าลืมไปดูวิดีโอให้จบนะ จะได้เข้าใจการทำงานอย่างละเอียด...
หวังว่าน้องๆ จะสนุกกับโปรเจคนี้กันนะ
สู้งานนะน้อง!