สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ขั้นตอนต่อไปนี้คือการทดลองเพื่อแสดงให้เห็นว่า LED ทำงานอย่างไร พวกเขาแสดงให้เห็นวิธีการหรี่ไฟ LED ในอัตราที่เท่ากันและวิธีจางเข้าและออก
คุณจะต้องการ:
- Arduino (ฉันใช้ดูโอ้)
- เขียงหั่นขนม
- ไฟ LED สีแดง 5 มม.
- ตัวต้านทาน 330 Ω (ไม่สำคัญ 330-560 Ω จะทำงาน)
- สายเชื่อมต่อที่เป็นของแข็ง 22 เกจ
ชิ้นส่วนที่จำเป็นสำหรับการทดลองเหล่านี้รวมอยู่ในชุดเริ่มต้น Arduino ทั้งหมด
ขั้นตอนที่ 1: อธิบายการปรับพัลส์
ไฟ LED จะทำงานที่แรงดันไฟฟ้าเท่ากันเสมอโดยไม่คำนึงถึงความสว่าง ความสว่างถูกกำหนดโดยออสซิลเลเตอร์คลื่นสี่เหลี่ยมและระยะเวลาที่แรงดันไฟฟ้าสูงจะกำหนดความสว่าง สิ่งนี้เรียกว่าการปรับความกว้างพัลส์ (PWM) สิ่งนี้ควบคุมโดยฟังก์ชัน Arduino analogWrite (พิน n) โดยที่ n มีค่าตั้งแต่ 0 ถึง 255 analogWrite () เอาต์พุต PWM ไม่ใช่แอนะล็อกจริง ถ้า n=2 LED จะสว่างเป็นสองเท่าของ n=1 ความสว่างจะเพิ่มเป็นสองเท่าเสมอเมื่อ n เพิ่มเป็นสองเท่า ดังนั้น n=255 จะสว่างเป็นสองเท่าของ n=128
ค่าของ n มักแสดงเป็นเปอร์เซ็นต์ที่เรียกว่ารอบการทำงาน รูปภาพแสดงร่องรอยของออสซิลโลสโคปสำหรับรอบการทำงาน 25, 50 และ 75%
ขั้นตอนที่ 2: Un-even Dimming
สร้างวงจรเหมือนในแผนภาพ ก็เหมือนวงจรไฟ LED กระพริบ มันใช้พิน 9 เพราะคุณต้องใช้พินที่เปิดใช้งาน PWM
คัดลอก/วางภาพสเก็ตช์ด้านล่างลงใน Arduino IDE และเรียกใช้
คุณจะสังเกตเห็นว่าไฟ LED ที่สว่างขึ้นจะหรี่ลงช้าลง เมื่อเข้าใกล้แสงสลัวที่สุดก็จะหรี่ลงอย่างรวดเร็ว
การตั้งค่าเป็นโมฆะ ()
{ โหมดพิน (9, เอาต์พุต); } วงเป็นโมฆะ () { int pin = 9; สำหรับ (int i = 255; i > -1; i--) { analogWrite (พิน, i); ล่าช้า(10); } สำหรับ (int i = 0; i < 256; i++) { analogWrite (พิน, i); ล่าช้า(10); } }
}
ขั้นตอนต่อไปจะแสดงวิธีการหรี่ไฟ LED ในอัตราคงที่ และในขั้นเดียวสำหรับคำสั่ง
ขั้นตอนที่ 3: ขึ้นและลงใน One For()
เพื่อให้ LED หรี่ลงที่อัตราคงที่ การหน่วงเวลา () จะต้องเพิ่มขึ้นในอัตราเลขชี้กำลัง เนื่องจากครึ่งรอบการทำงานจะให้ความสว่างเพียงครึ่งหนึ่งเสมอ ความคิดแรกของฉันคือลองใช้ฟังก์ชัน map() แต่เป็นเชิงเส้น
เส้น:
int d = (16-i/16)^2;
คำนวณกำลังสองของความสว่างผกผันเพื่อกำหนดความยาวของการหน่วงเวลา
คัดลอก/วางภาพสเก็ตช์ด้านล่างลงใน Arduino IDE แล้วคุณจะเห็นว่าไฟ LED จะจางเข้าและออกในอัตราคงที่
การตั้งค่าเป็นโมฆะ ()
{ โหมดพิน (9, เอาต์พุต); } วงเป็นโมฆะ () { int x = 1; int พิน = 9; สำหรับ (int i = 0; i > -1; i = i + x) { int d = (16-i/16)^2; analogWrite(พิน ผม); ล่าช้า (d); ถ้า (i == 255) x = -1; // เปลี่ยนทิศทางที่จุดสูงสุด } }