สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
โดย IanCummingติดตามเพิ่มเติมโดยผู้เขียน:
เกี่ยวกับ: ฉันชอบทำสิ่งของต่างๆ ตั้งแต่จรวดไปจนถึงอุปกรณ์อิเล็กทรอนิกส์ ข้อมูลเพิ่มเติมเกี่ยวกับเอียนคัมมิง »
ยินดีต้อนรับทุกคน
ใกล้ถึงช่วงเทศกาลแล้ว ร้านค้าจำนวนมากเริ่มตกแต่งตามเทศกาล ฉันคิดว่าถึงเวลาที่เหมาะสมแล้วที่จะสร้างไฟประดับประดาด้วยเสียงเพลง!
ขั้นตอนที่ 1: อะไหล่ที่ใช้
ฉันจะใช้สิ่งต่อไปนี้:
- ไฟ LED 12 ดวง
- 12 ตัวต้านทานจำกัดกระแส
- 1 ULN 2803 อาร์เรย์ทรานซิสเตอร์ดาร์ลิงตัน
- สายจัมเปอร์บางสาย
- ลำโพง Piezo
- เขียงหั่นขนมและ
- Arduino
- ในการสร้างสตริงของไฟนางฟ้า ฉันใช้สายไฟ 5 เส้นจากสายเคเบิลอีเทอร์เน็ต
ขั้นตอนที่ 2: รหัส
//GLOBAL VARS int barTime = 1200; // 8/8 = 1,000ms ไบต์ nrLEDS = 4; // 4 ไฟ LED ฐาน คุณสามารถเพิ่มไฟ LED แบบไบต์คู่จำนวนมากได้ = {3, 4, 5, 6}; ลำโพงไบต์ = 11; รูปแบบไบต์ความยาว = 64; // รูปแบบ ความยาว ไบต์ songLength = 51; เพลงไบต์ const = { // Jingle Bells Data 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 3, 30, 1, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 29, 2, 27, 2, 27, 2, 29, 2, 27, 4, 32, 4, 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 2, 30, 2, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 32, 2, 32, 2, 30, 2, 27, 2, 25, 8 }; // โครงสร้างเป็นหมายเลขหมายเหตุแล้ว // NoteLength ในรูปแบบไบต์ const ของ 8 = { //ข้อมูลรูปแบบ 0b0001, 0b0010, 0b0100, 0b1000, // บิตสอดคล้องกับ Leds ในอาร์เรย์ 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0001,011, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0001,011, 0b 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0101, 001100, 001100 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, };
ก่อนอื่นฉันประกาศตัวแปรของฉัน สิ่งที่น่าสนใจคือเพลงและรูปแบบ
- เพลงเก็บทำนอง; ในกรณีนี้คือระฆังกริ๊ง
- รูปแบบจะเก็บตำแหน่งเปิดและปิดเป็นบิตของค่าในอาร์เรย์
ฟังก์ชั่นที่กำหนดเอง
// ฟังก์ชัน int noteToHz (หมายเหตุ int) { // แปลงหมายเหตุ Nr. เป็นความถี่ลอยความถี่ = 440 * (pow(1.059463094359, note-21)); // -21 ให้คุณทราบ 1 ที่ C3 (ฉันคิดว่า) return int(freq); // ผลลัพธ์มีความแม่นยำถึง 1hz } void lightLEDs (byte PORT_X) {// สถานะของ LED ควบคุมสำหรับ (int q = 0;q
สองฟังก์ชันที่ฉันมีจะทำดังต่อไปนี้:
- คำนวณความถี่ของฟังก์ชันโทนในลูป
- เปิดหรือปิด LED ขึ้นอยู่กับค่าที่ส่งไปยังฟังก์ชัน
ตั้งค่าฟังก์ชั่น
การตั้งค่าเป็นโมฆะ () {// ตั้งค่า OUTPUT พิน pinMode (ลำโพง, OUTPUT); สำหรับ(int t = 0; t < nrLEDS; t++){ pinMode(leds[t], OUTPUT); } }
ในฟังก์ชันการตั้งค่า ฉันตั้งค่าพินที่ต้องการเป็น OUTPUT
ฟังก์ชันวนรอบ
วงเป็นโมฆะ () (// วงเพลงสำหรับ (int t = 0; t < songLength; t ++) (// โน้ต, ความยาวและการเล่นทำนอง int note = noteToHz (เพลง [t * 2]); ความยาว int = ((เพลง[(t * 2)+1] * barTime) / 8); น้ำเสียง(ลำโพง, โน้ต, ความยาว - 50); // ไฟกระพริบ! lightLEDs (รูปแบบ [t % patternLength]); ล่าช้า(ความยาว); } // Silence Loop int randomSilence = สุ่ม (1000, 5000); สำหรับ (int t = 0;t
ฉันมี 2 ลูปในฟังก์ชัน Main Loop วงเพลงและวงเงียบ
ลูปเพลงจะอ่านข้อมูลจากอาร์เรย์เพลง เล่นโน้ตโดยใช้ฟังก์ชันโทน
วงเพลงจะ
- อ่านข้อมูลจากอาร์เรย์เพลง
- เล่นโน้ตโดยใช้ฟังก์ชั่นโทนแล้ว
- เปิดไฟ LED อาร์เรย์รูปแบบการอ่าน
ในวงความเงียบ
มีเพียง LED เท่านั้นที่ติดสว่าง
เสียบ Arduino และอัปโหลดรหัส (แล้วถอดปลั๊ก)
ขั้นตอนที่ 3: การเริ่มวงจร
ฉันจะเริ่มด้วยสายไฟ
- ฉันใช้สายไฟจากสายเคเบิลอีเทอร์เน็ตและบัดกรี LED 3 ดวงขนานกันสี่ครั้ง ตรวจสอบให้แน่ใจว่าได้เว้นระยะห่างของ LED ให้เท่ากันมากกว่า 2 เมตร
- ฉันบัดกรีแอโนดของแต่ละอันนำไปสู่ลวดเส้นเดียว
- จากนั้นแคโทดของ LED แต่ละตัวถึง 4 สายแยกกัน ด้วยตัวต้านทานแน่นอน
- ฉันทำขั้นตอนนี้ซ้ำ 3 ครั้งเพื่อให้ได้สายไฟ LED 12 ดวงและใส่หมุดส่วนหัวที่ปลายสายไฟทั้ง 5 เส้น
เชื่อมต่อราง Positive และ Ground เข้ากับเขียงหั่นขนม
ขั้นตอนที่ 4: ULN2803
วางชิป ULN2308 ลงบนเขียงหั่นขนม
ULN2308 เป็นชิปอาร์เรย์ทรานซิสเตอร์ จากแผ่นข้อมูลที่ฉันเห็น
- พิน 1 นั้นเป็นอินพุตที่เปลี่ยนพิน 18 "ON"
- พิน 2 เปิด 17 เป็นต้น
- พิน 9 เป็นกราวด์
- ต่อพิน 9 ของชิปเข้ากับรางกราวด์
- ต่อรางขั้วบวกกับแถบเทอร์มินัลหนึ่งแถบเหนือพิน 18 (คุณจะเห็นสาเหตุในหนึ่งนาที)
- เชื่อมต่อพิน 1 ของชิปกับพิน 3 ของ Arduino
- 2 ไป 4
- 3 ของชิปไปที่ 5 และ
- 4 ไปที่พิน 6 ของ Arduino
- วางสาย LED ลงบนเขียงหั่นขนม เมื่อต่อสายแอโนดทั่วไปเข้ากับแถบที่ต่อกับไฟ 5 โวลต์ หมุดไฟแฟรี่ที่เหลือควรไปที่พิน 18, 17, 16 และ 15 ของชิป
ขั้นตอนที่ 5: การเพิ่มเสียง
- เชื่อมต่อ Piezo Speaker ระหว่างแถบขั้วต่อ 2 เส้น
- เชื่อมต่อขั้วลบขององค์ประกอบ Piezo กับกราวด์และ
- ปลายอีกด้านของลำโพงเพื่อปักหมุด 11
ขั้นตอนที่ 6: บทสรุป
ฉันมีสายไฟที่จะสุ่มเล่นกระดิ่งกริ๊งเพื่อเตือนฉันว่าช่วงนี้เป็นช่วงเทศกาล