บทที่ 98-8: ไฟเดินด้วยปุ่มกดและ LED ด้วย Arduino
โปรเจกต์นี้แสดงวิธีสร้าง "ไฟวิ่ง" ที่เลื่อนไปหนึ่งก้าวทุกครั้งที่คุณกดปุ่มกด แทนที่จะเป็นไฟที่ทำงานตามตัวจับเวลาของตัวเอง คุณจะได้รับการควบคุมโดยตรงและสัมผัสได้: การกดแต่ละครั้งจะเลื่อน LED ที่สว่างอยู่ไปหนึ่งตำแหน่งไปข้างหน้า และหลังจาก LED ตัวสุดท้ายก็จะวนกลับไปที่ตัวแรก นี่เป็นหนึ่งในบล็อกการสร้างที่มีประโยชน์ที่สุดในการเรียนรู้ Arduino เพราะมันสอนวิธีผสมผสานอินพุตดิจิทัล (ปุ่มกด) กับเครื่องสถานะแบบหมุน (LED ตัวใดที่สว่างอยู่ในขณะนี้) — รูปแบบที่คุณจะนำกลับมาใช้ซ้ำอยู่ตลอด
เมื่อคุณเข้าใจรูปแบบนี้แล้ว ตรรกะเดียวกันนี้จะขับเคลื่อนโปรเจกต์จริงได้หลากหลายมาก นี่คือไอเดียปฏิบัติบางส่วนที่คุณสามารถสร้างได้ด้วยมัน:
- ตัวเลือกเมนูบนอุปกรณ์ที่การกดแต่ละครั้งจะไฮไลต์ตัวเลือกถัดไป
- ตัวบ่งชี้ขั้นตอนตามลำดับสำหรับเครื่องจักรหรือกระบวนการ (ขั้นตอนที่ 1, ขั้นตอนที่ 2, ขั้นตอนที่ 3...)
- จอแสดงคะแนนหรือระดับที่คุณเลื่อนด้วยตนเองด้วยปุ่ม
- ตัวบ่งชี้ "ช่องถัดไป" หรือ "โหมดถัดไป" สำหรับตัวควบคุมแสงสว่าง
- เกมง่าย ๆ หรือกริ่งตอบคำถามที่ผู้เล่นผลัดกันทำให้หลอดถัดไปสว่าง
- รีเลย์หรือตัวจัดลำดับโหลดที่การกดแต่ละครั้งจะเปิดใช้งานเอาต์พุตถัดไปตามลำดับ
ข้อได้เปรียบสำคัญเหนือไฟวิ่งอัตโนมัติคือการควบคุม: จะไม่มีอะไรเกิดขึ้นจนกว่าคุณจะกด ดังนั้นไฟจะเลื่อนไปข้างหน้าเฉพาะเมื่อคุณตัดสินใจเท่านั้น วิดีโอยังระบุด้วยว่าแนวคิดการสลับและการจัดลำดับแบบเดียวกันนี้สามารถขับเคลื่อนรีเลย์เพื่อสลับไฟ AC หรือควบคุมมอเตอร์ได้ ไม่ใช่แค่ LED (ในวิดีโอที่ 19:52)
ฮาร์ดแวร์และส่วนประกอบ
รายการชิ้นส่วนนั้นสั้นและราคาไม่แพง:
- บอร์ด Arduino (Uno, Nano, Mega หรือบอร์ดที่เข้ากันได้ใด ๆ)
- LED ห้าตัว — ขนาด 5 มม. หรือ 3 มม. สีใดก็ได้ที่คุณชอบ
- ตัวต้านทานจำกัดกระแสห้าตัว 200 Ω ถึง 1000 Ω (วิดีโอใช้ 1 kΩ)
- สวิตช์ปุ่มกดหนึ่งตัว (สวิตช์สัมผัสแบบชั่วขณะเหมาะที่สุด)
- เบรดบอร์ดและสายจัมเปอร์ดูปองต์จำนวนหนึ่ง
หมายเหตุสั้น ๆ เกี่ยวกับ LED: แคโทดคือขาที่สั้นกว่าและด้านที่มีขอบแบน ในขณะที่แอโนดคือขาที่ยาวกว่า (ในวิดีโอที่ 03:13) ค่าตัวต้านทานไม่สำคัญมากนัก — ตัวต้านทานที่สูงกว่าจะทำให้ LED สว่างน้อยลงเท่านั้น ดังนั้นค่าตั้งแต่ประมาณ 300 Ω ขึ้นไปจนถึง 1000 Ω ก็ใช้ได้ดี (ในวิดีโอที่ 05:33)
คู่มือการเดินสาย
การเดินสายโดยพื้นฐานแล้วเหมือนกับไฟวิ่งห้า LED มาตรฐาน โดยเพิ่มปุ่มกดหนึ่งตัว แอโนดของ LED แต่ละตัวเชื่อมต่อกับพิน Arduino ของตัวเอง และแคโทดแต่ละตัวเชื่อมต่อผ่านตัวต้านทานของตัวเองไปยังรางกราวด์ร่วมบนเบรดบอร์ด ในการสร้างนี้ LED เชื่อมต่อกับพิน 3, 4, 5, 6 และ 7 (ในวิดีโอที่ 31:37) ปุ่มกดวางอยู่บนเบรดบอร์ดโดยขาข้างหนึ่งต่อลงกราวด์และขาอีกข้างต่อกับพิน 2 — พินเดียวกับที่โค้ดใช้สำหรับปุ่ม (ในวิดีโอที่ 37:04)
เนื่องจากโค้ดเปิดใช้งานตัวต้านทาน pull-up ภายในของ Arduino จึงไม่จำเป็นต้องใช้ตัวต้านทานภายนอกกับปุ่ม เมื่อไม่ได้กดปุ่ม พินจะอ่านค่าเป็น HIGH และเมื่อคุณกด พินจะถูกดึงลงกราวด์และอ่านค่าเป็น LOW (ในวิดีโอที่ 14:02)
คำอธิบายโค้ด
โปรแกรมเต็มมีอยู่ด้านล่างบทความนี้ ที่นี่เราจะเน้นส่วนที่คุณจะต้องการแก้ไขจริง ๆ
ที่ด้านบนของสเก็ตช์ LED แต่ละตัวและปุ่มถูกกำหนดให้กับพิน นี่คือจุดที่คุณปรับแต่งการสร้างให้ตรงกับการเดินสายของคุณเอง:
const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int LED_ON = LED1; // which LED is currently lit
ตัวแปร LED_ON เป็นหัวใจของโปรเจกต์นี้ มันจดจำว่า LED ตัวใดสว่างอยู่ในขณะนี้ โดยเริ่มที่ LED1 ทุกครั้งที่คุณกดปุ่ม โค้ดจะเลื่อน LED_ON ไปยัง LED ถัดไปในลำดับและปิดตัวก่อนหน้า ดังนั้นจะมี LED เพียงตัวเดียวที่สว่างในแต่ละครั้ง
นอกจากนี้ยังมีความหน่วงเล็กน้อยหลังการกดแต่ละครั้ง:
delay(200); // debounce / give the user time between presses
การหยุด 200 มิลลิวินาทีนี้ป้องกันไม่ให้การกดทางกายภาพครั้งเดียวถูกบันทึกเป็นการกดหลายครั้ง หากนิ้วของคุณสั่นหรือปุ่มรู้สึกไวเกินไป ให้เพิ่มจำนวนนี้ หากคุณต้องการการตอบสนองที่เร็วขึ้น ให้ลดลง โปรดทราบว่าการตั้งค่าต่ำเกินไปอาจทำให้ไฟข้ามไปข้างหน้าอย่างไม่คาดคิด (ในวิดีโอที่ 41:20)
ตรรกะหลักอยู่ใน loop() โดยจะอ่านสถานะปุ่ม และจะเลื่อนไฟก็ต่อเมื่อปุ่มถูกกด (อ่านค่าได้ LOW) เท่านั้น ลำดับการทำงานใช้การตรวจสอบแบบ if / else if ต่อกันเพื่อเลื่อนจาก LED1 ไป LED2 ไป LED3 และต่อไปเรื่อย ๆ แล้ววนกลับมาที่ LED1 หลังจากดวงสุดท้าย หากคุณต้องการเปลี่ยนทิศทางหรือลำดับของ LED นี่คือบล็อกที่ต้องแก้ไข — เพียงกำหนดใหม่ว่าขาใดตามหลังขาใด
โปรเจกต์สดและการสาธิต
หลังจากอัปโหลดโค้ด การกดปุ่มจะทำให้ LED ดวงแรกติด; เมื่อปล่อยปุ่ม LED ดวงนั้นจะยังคงติดอยู่ การกดครั้งถัดไปจะเลื่อนไฟไปยัง LED ดวงที่สอง จากนั้นดวงที่สาม สี่ และห้า และการกดครั้งต่อไปจะกลับมาที่ดวงแรก — เป็นการหมุนวนต่อเนื่อง (ในวิดีโอที่ 40:22)
ผลข้างเคียงที่ดีของดีเลย์ 200 มิลลิวินาที คือหากคุณ กดค้าง ปุ่ม ไฟจะเลื่อนไปเรื่อย ๆ ด้วยตัวเองทุก 200 มิลลิวินาที ซึ่ง effectively เปลี่ยนโปรเจกต์ให้เป็นไฟวิ่งอัตโนมัติขณะกดปุ่มค้างไว้ (ในวิดีโอที่ 42:07) ปล่อยปุ่มแล้วมันจะหยุดที่ LED ปัจจุบัน ซึ่งทำให้คุณได้ทั้งการเลื่อนแบบmanualและการทำงานแบบไม่ต้องใช้มือจากปุ่มเดียว
หากคุณต้องการให้ไฟทำงานอัตโนมัติโดยไม่ใช้ปุ่มเลย นั่นเป็นอีกบิลด์หนึ่ง เวอร์ชันอัตโนมัติครอบคลุมอยู่ใน Lesson 98-7: Walking Light Using Arduino and 5 LEDs
โปรเจกต์ที่เกี่ยวข้องจากวิดีโอนี้
- Lesson 98-1: How to Turn On and Off an LED with Arduino
- Lesson 98-2: How to Turn On and Off an LED Using a Push Button with Arduino
- Lesson 98-3: How to Turn On/Off a Toggle LED Using a Push Button with Arduino
- Lesson 98-4: Fading an LED Light Using Arduino: Brightness Control
- Lesson 98-5: Fade Light When a Button Is Pressed Using Arduino
- Lesson 98-6: Seesaw LED Game with Arduino
- Lesson 98-7: Walking Light Using Arduino and 5 LEDs
- Lesson 98-9: LED Voltage Level Meter Using Arduino or walking light with potentiometer
- Lesson 98-10: Arduino Traffic Light
บทต่าง ๆ
- [00:00] ภาพรวมของ 10 โปรเจกต์ LED ด้วย Arduino
- [01:22] แนะนำคอร์ส Arduino แบบทีละขั้นตอน
- [02:29] ทำความเข้าใจ LED: สัญลักษณ์ ขั้ว และขา
- [03:49] การคำนวณตัวต้านทานจำกัดกระแสของ LED
- [30:47] ไฟวิ่งด้วย LED 5 ดวง: การต่อวงจรและหลักการ
- [32:52] โค้ดไฟวิ่ง: ขา จังหวะเวลา และลูป
- [36:41] การเลื่อนไฟด้วยปุ่มกด
- [37:44] ไฟวิ่งด้วยปุ่มกด: อธิบายโค้ดทีละส่วน
- [40:22] การสาธิตและการปรับดีเลย์การกด
- [57:16] กล่าวปิดท้ายและบทส่งท้ายของคอร์ส
This code has not been parsed yet. Please return to the admin panel to parse it.
สิ่งที่คุณอาจต้องการ
-
อเมซอนSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
อเมซอน
-
อเมซอน
-
อเมซอน
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ภายนอก
-
ภายนอก
-
ภายนอก
ไฟล์📁
ไลบรารี Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
คู่มือผู้ใช้
-
คู่มือการประกอบรถอัจฉริยะ SunFounder 3-in-1 Arduino Smart Carเอกสารนี้แสดงการประกอบ SunFounder 3-in-1 Arduino Smart Car ทีละขั้นตอน
SunFounder_car_assembly_manual.pdf1.20 MB