บทที่ 98-5: การหรี่ไฟเมื่อกดปุ่มโดยใช้ Arduino
ในบทเรียนนี้ คุณจะสร้างไฟที่ค่อยๆ หรี่ลงตามคำสั่ง: กดปุ่มกดแล้ว LED จะเริ่มต้นที่ความสว่างเต็มที่ จากนั้นค่อยๆ หรี่ลงจนดับ นี่เป็นหนึ่งในรูปแบบเริ่มต้นที่มีประโยชน์ที่สุดใน Arduino เพราะมันรวมอินพุตดิจิทัล (ปุ่มกด) เข้ากับเอาต์พุตแอนะล็อกแบบ PWM (ความสว่างของ LED) และสอนวิธีควบคุมอัตราและความราบรื่นของการเปลี่ยนแปลง แทนที่จะเพียงเปิดและปิดสิ่งใดสิ่งหนึ่ง
การหรี่ไฟตามคำสั่งปรากฏอยู่ทุกหนแห่งในผลิตภัณฑ์จริง นี่คือวิธีปฏิบัติบางประการที่คุณสามารถใช้สิ่งที่เรียนรู้ที่นี่ได้:
- ไฟแสดงสถานะแบบปิดนุ่มนวล — แทนที่หลอดไฟจะดับทันที มันจะหรี่ลงอย่างนุ่มนวลเมื่อคุณกดปุ่ม ซึ่งดูประณีตกว่ามากบนเครื่องใช้ไฟฟ้าและกล่องที่พิมพ์ด้วยเครื่องพิมพ์ 3 มิติ
- โหมดหลับ / สแตนด์บาย — กดปุ่มแล้ว LED สถานะที่สว่างจะหรี่ลงจนมืดเพื่อไม่รบกวนคุณในเวลากลางคืน ขณะที่วงจรยังคงได้รับไฟ
- ไฟเวทีหรือไฟโมเดลแบบ "เฟดสู่ความมืด" — ปุ่มเดียวกระตุ้นการหรี่ลงอย่างราบรื่นของแถบ LED หรือแผงไฟ แทนที่จะตัด abruptly
- การตอบสนองเพื่อประหยัดแบตเตอรี่ — การกดปุ่มชั่วขณะให้การยืนยันแบบแฟลชสว่างที่ค่อยๆ จางหายไป ดังนั้น LED จะสว่างเต็มที่เพียงช่วงสั้นๆ
- งานศิลปะและพร็อพแบบอินเทอร์แอกทีฟ — เอฟเฟกต์ "หายใจออก" ที่กระตุ้นด้วยการสัมผัส เหมาะสำหรับคอสเพลย์ ไดโอรามา หรือการจัดแสดงในพิพิธภัณฑ์
แนวคิดหลักนั้นง่าย: ปุ่มบอก Arduino ว่า "เริ่มหรี่ตอนนี้" และ Arduino จะลดความสว่างของ LED จาก 255 (เต็ม) ลงไปที่ 0 (ดับ) ทีละขั้นเล็กๆ เพราะขั้นตอนเล็กและเกิดขึ้นอย่างรวดเร็ว ตาของคุณจึงเห็นการหรี่ลงอย่างราบรื่นแทนที่จะกระโดด
หากคุณไม่เคยหรี่ LED มาก่อน การควบคุมความสว่างพื้นฐานมีอธิบายไว้ใน บทเรียน 98-4: การหรี่ไฟ LED ด้วย Arduino: การควบคุมความสว่าง บทเรียนนี้ต่อยอดโดยตรงจากพื้นฐานนั้นด้วยการเพิ่มปุ่มกดเป็นตัวกระตุ้น
ฮาร์ดแวร์และส่วนประกอบ
นี่เป็นการสร้างที่ต้นทุนต่ำมาก — ทุกอย่างที่นี่เป็นวัสดุมาตรฐานในชุดเริ่มต้น:
- บอร์ด Arduino (Uno, Nano, Mega หรือบอร์ดที่เข้ากันได้)
- LED หนึ่งดวง (5 มม. หรือ 3 มม. สีใดก็ได้)
- สวิตช์ปุ่มกดหนึ่งตัว (แบบชั่วขณะ ชนิดทัชแอคทีฟ 4 ขาใช้ได้ดี)
- ตัวต้านทานหนึ่งตัวสำหรับ LED — ตั้งแต่ 200 Ω ถึง 1000 Ω (ค่า 220 Ω หรือ 330 Ω แบบคลาสสิกนั้นสมบูรณ์แบบ)
- เขียงหั่นขนมและสายจัมเปอร์ดูปองต์
- สาย USB สำหรับโปรแกรม (และแบตเตอรี่หรืออะแดปเตอร์ 5 V หากคุณต้องการให้ทำงานแบบไม่ต่อสาย)
หมายเหตุสั้นๆ เกี่ยวกับตัวต้านทาน LED: LED ต้องการแรงดันตกคร่อมประมาณ 2 V และกระแสประมาณ 10 mA ด้วยแหล่งจ่าย 5 V ตัวต้านทานต้องลดแรงดันที่เหลือ 3 V ดังนั้นกฎของโอห์มให้ค่าประมาณ 300 Ω ค่าใดก็ได้ตั้งแต่ 300 Ω ขึ้นไปถึง 1000 Ω จะทำงานได้ — ค่าที่สูงขึ้นเพียงทำให้ LED สว่างน้อยลง การใช้ตัวต้านทานไม่ใช่ทางเลือก; หากไม่มีมัน LED จะดึงกระแสมากเกินไปและไหม้
คู่มือการต่อสาย
การต่อสายนั้นตั้งใจให้เรียบง่าย ขาอาโนดของ LED (ขาที่ยาวกว่า) เชื่อมต่อผ่านตัวต้านทานไปยังขอดิจิทัล 3 และแคโทด (ขาที่สั้นกว่า ซึ่งมีด้านแบนบนตัวถัง) ไปยังกราวด์ ปุ่มกดเชื่อมต่อระหว่างขอดิจิทัล 2 และกราวด์ — ไม่จำเป็นต้องใช้ตัวต้านทานพูลอัปภายนอกเพราะโค้ดเปิดใช้งานพูลอัปภายในของ Arduino
ให้ความสนใจกับขั้วของ LED: ด้านแบนของตัวพลาสติกและขาที่สั้นกว่าบ่งบอกถึงแคโทด (ลบ) หากคุณใส่กลับด้าน LED จะไม่สว่าง — ไม่เกิดความเสียหาย เพียงพลิกมันกลับ
สำหรับปุ่มกด หากคุณใช้สวิตช์ทัชแอคทีฟ 4 ขา จำไว้ว่าขาภายในจับคู่กัน: สองในสี่ขาจะเชื่อมต่อถึงกันเสมอ ใช้มัลติมิเตอร์ในโหมดความต่อเนื่องเพื่อหาคู่ที่ส่งเสียงบี๊บเมื่อกด จากนั้นใช้หนึ่งขาจากแต่ละด้าน ด้านหนึ่งไปยังขา 2 อีกด้านไปยังกราวด์
คำอธิบายโค้ด
สเก็ตช์นั้นสั้น และเกือบทุกอย่างที่คุณอาจต้องการเปลี่ยนแปลงอยู่ในไม่กี่บรรทัดที่ด้านบน นี่คือส่วนที่ผู้ใช้กำหนดค่าได้:
const int pushButtonPin = 2;//ขาที่สวิตช์ปุ่มกดเชื่อมต่ออยู่
const int LEDPin = 3;//ขาที่ LED เชื่อมต่ออยู่
const int fadeAmount = 10; // จำนวนจุดที่จะหรี่ LED ลง
const int fadeSpeed = 5;//เวลาหรี่เป็นมิลลิวินาที ยิ่งค่าน้อย การหรี่ก็ยิ่งเร็ว
pushButtonPin และ LEDPin เพียงบอก Arduino ว่าคุณต่อสายอุปกรณ์เข้ากับขาใด หากคุณย้ายปุ่มไปที่ขา 4 หรือย้าย LED ไปที่ขา 9 (ขาที่รองรับ PWM) เพียงเปลี่ยนตัวเลขสองตัวนี้ให้ตรงกับการต่อสายของคุณ โปรดทราบว่าขา LED ต้อง รองรับ PWM — บนบอร์ด Uno นั่นหมายถึงขา 3, 5, 6, 9, 10 หรือ 11 — เพราะการหรี่แสงต้องใช้ analogWrite()
fadeAmount ควบคุมขนาดของแต่ละขั้นความสว่าง ความสว่างมีค่าตั้งแต่ 0 ถึง 255 ดังนั้น fadeAmount เท่ากับ 10 หมายความว่า LED จะหรี่ลงในประมาณ 25 ขั้น ค่าที่มากขึ้นจะทำให้การหรี่หยาบและเร็วขึ้น ค่าที่น้อยลงจะทำให้เนียนและช้าลง
fadeSpeed คือเวลาหน่วงเป็นมิลลิวินาทีระหว่างแต่ละขั้น นี่คือปุ่มปรับที่สำคัญที่สุดเพียงอย่างเดียวสำหรับความรู้สึกของเอฟเฟกต์ ค่า 5 มิลลิวินาทีให้การหรี่ที่รวดเร็วและกระชับ ค่า 30 มิลลิวินาทีหรือมากกว่าให้การหรี่ที่ช้าและนุ่มนวล เมื่อรวมกับ fadeAmount ค่าสองค่านี้ช่วยให้คุณปรับการหรี่ให้ได้ลักษณะที่คุณต้องการพอดี
ยังมีตัวแปรภายในที่น่าสนใจอีกตัวหนึ่ง:
int brightness = 255; // ความสว่างของ LED
int pushButtonStatus = 0; // ค่าที่อ่านได้จากขา 2
brightness เริ่มต้นที่ 255 หมายความว่า LED เริ่มต้นที่ความสว่างเต็มที่ทุกครั้งที่คุณกดปุ่ม หากคุณต้องการให้การหรี่เริ่มจากจุดที่มืดกว่า — เช่น ครึ่งหนึ่งของความสว่าง — ให้เปลี่ยนค่านี้เป็น 128
ตรรกะทำงานเช่นนี้: ลูปจะอ่านค่าปุ่ม หากปุ่มถูกกด (LOW เนื่องจาก pull-up ภายใน) ลูป while จะทำงานตราบเท่าที่ค่า brightness มากกว่าศูนย์ ภายในลูปนั้น Arduino จะเขียนค่า brightness ปัจจุบันไปยัง LED ลบด้วย fadeAmount รอ fadeSpeed มิลลิวินาที แล้ววนซ้ำ เมื่อปุ่มไม่ถูกกด LED จะถูกเขียนเป็น 0 และดับอยู่
รายละเอียดสำคัญอย่างหนึ่ง: pull-up ภายในหมายความว่าขาจะอ่านค่า HIGH เมื่อปุ่มไม่ถูกกด และ LOW เมื่อปุ่มถูกกด นั่นคือเหตุผลที่โค้ดตรวจสอบ LOW เพื่อตรวจจับการกด หากคุณเปลี่ยนไปใช้ตัวต้านทาน pull-down ภายนอก คุณจะต้องเปลี่ยนการเปรียบเทียบนั้นเป็น HIGH
โปรเจกต์สดและการสาธิต
เมื่ออัปโหลดแล้ว พฤติกรรมจะเกิดขึ้นทันทีและน่าพอใจ กดปุ่มแล้ว LED จะสว่างเต็มที่ทันที จากนั้นจะหรี่ลงจนดับอย่างเห็นได้ชัดในช่วงเวลาที่คุณควบคุม ปล่อยปุ่มแล้ว LED จะดับ กดอีกครั้งแล้วการหรี่จะเริ่มใหม่จากความสว่างเต็มที่
ในวิดีโอ การหรี่ถูกสาธิตที่ค่าต่างๆ เพื่อให้คุณได้ยินและเห็นความแตกต่าง ด้วย fadeAmount = 20 การหรี่จะเร็วและเป็นขั้นๆ — ไปถึงศูนย์ในไม่กี่ขั้นที่มองเห็นได้ ลดลงมาเป็น fadeAmount = 10 จะเนียนขึ้นอย่างเห็นได้ชัด และเมื่อใช้ fadeAmount = 3 การหรี่จะใช้เวลานานขึ้นอย่างเห็นได้ชัดและดูเกือบต่อเนื่อง ค่า fadeSpeed ก็มีผลอย่างมากเช่นกัน: ตั้งเป็น 1 มิลลิวินาทีทำให้การหรี่เกือบทันที ขณะที่ค่าที่มากขึ้นจะยืดเวลาออกไป
ลองทดลองนี้: ตั้ง fadeAmount = 5 และ fadeSpeed = 30 คุณจะได้การหรี่ที่ช้าและนุ่มนวล ดูเหมือนไฟที่กำลังหลับลง จากนั้นตั้ง fadeAmount = 50 และ fadeSpeed = 1 เพื่อการตัดที่แรงและเร็ว ไม่มีค่าใด "ผิด" — มันขึ้นอยู่กับอารมณ์ที่คุณต้องการทั้งหมด
พฤติกรรมการสลับของปุ่มเดียวกันถูกกล่าวถึงแยกใน บทเรียน 98-3: วิธีเปิด/ปิด LED แบบสลับโดยใช้ปุ่มกดกับ Arduino และเวอร์ชันกดแล้วติดที่ง่ายกว่าอยู่ใน บทเรียน 98-2: วิธีเปิดและปิด LED โดยใช้ปุ่มกดกับ Arduino
เนื่องจากการหรี่ถูกกระตุ้นด้วยการสัมผัสชั่วขณะ วงจรเดียวกันนี้จึงเหมาะอย่างยิ่งสำหรับขับรีเลย์หรือ MOSFET แทน LED — คุณสามารถหรี่หลอด 12 V การสตาร์ทแบบนุ่มนวลของมอเตอร์ หรือการอุ่นของขดลวดความร้อน ปุ่มเป็นเพียงตัวกระตุ้น สิ่งที่คุณหรี่นั้นขึ้นอยู่กับคุณ
โปรเจกต์ที่เกี่ยวข้องจากวิดีโอนี้
- บทเรียน 98-1: วิธีเปิดและปิด LED ด้วย Arduino
- บทเรียน 98-2: วิธีเปิดและปิด LED โดยใช้ปุ่มกดกับ Arduino
- บทเรียน 98-3: วิธีเปิด/ปิด LED แบบสลับโดยใช้ปุ่มกดกับ Arduino
- บทเรียน 98-4: การหรี่แสง LED โดยใช้ Arduino: การควบคุมความสว่าง
- บทเรียน 98-6: เกม LED Seesaw กับ Arduino
- บทเรียน 98-7: ไฟวิ่งโดยใช้ Arduino และ LED 5 ดวง
- บทเรียน 98-8: ไฟวิ่งด้วยปุ่มกดและ LED กับ Arduino
- บทเรียน 98-9: มิเตอร์วัดระดับแรงดัน LED โดยใช้ Arduino หรือไฟวิ่งด้วยโพเทนชิออมิเตอร์
- บทเรียน 98-10: ไฟจราจร Arduino
บทต่างๆ
- [00:00] ภาพรวมของโปรเจกต์ LED 10 โปรเจกต์
- [01:00] แนะนำหลักสูตร Arduino แบบทีละขั้นตอน
- [02:29] พื้นฐาน LED: สัญลักษณ์ ขั้ว และกระแสไฟฟ้า
- [03:49] การคำนวณตัวต้านทาน LED ด้วยกฎของโอห์ม
- [05:53] โปรเจกต์ 1: การเปิดและปิด LED
- [12:43] โปรเจกต์ 2: LED กับปุ่มกด
- [17:13] โปรเจกต์ 3: สลับเปิดปิด LED ด้วยปุ่มกด
- [20:12] โปรเจกต์ 4: การหรี่แสง LED
- [23:20] โปรเจกต์ 5: การหรี่แสง LED ด้วยปุ่มกด
- [27:32] โปรเจกต์ 6: LED กระดกขึ้นลง
- [30:47] โปรเจกต์ 7: ไฟวิ่ง
- [36:41] โปรเจกต์ 8: ไฟวิ่งด้วยปุ่มกด
- [42:25] โปรเจกต์ 9: มิเตอร์วัดระดับแรงดัน LED
- [49:25] โปรเจกต์ 10: ไฟจราจร Arduino
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