Auditory Arrays: Arduino Coffin Dance Theme
มีกลไกการทำงานเหมือนกับโปรเจกต์ Home Alone, Arduino Coffin Dance Theme เป็นจุดเริ่มต้นที่สมบูรณ์แบบและจดจำได้ง่ายในการจัดการความถี่ด้วยอัลกอริทึม โปรเจกต์นี้กำหนดให้นักพัฒนาโปรแกรมต้องสร้างทำนองเพลง EDM ที่รวดเร็วและเป็น staccato สูง ด้วยการกำหนดเอาต์พุต Hz ทางกายภาพและการจัดรูปแบบ delay() อย่างพิถีพิถัน

ฟิสิกส์ของ Staccato
เพลง EDM ไม่สามารถเล่นแบบ legato (อย่างนุ่มนวล) ได้ หากโน้ตสองตัวซ้อนทับกัน ทำนองเพลงจะกลายเป็นเสียงแหลมที่ดังต่อเนื่อง
- คำสั่ง
tone()มาตรฐานจะเล่นต่อเนื่องจนกว่าจะถูกหยุดด้วยnoTone() - ตรรกะการทำงาน: คุณต้องคำนวณความยาวที่แน่นอนของโน้ต (เช่น 200 milliseconds) ทางคณิตศาสตร์ และบังคับให้ CPU หยุดชั่วคราวอย่างจงใจก่อนที่จะเล่นโน้ตถัดไป!
int noteDuration = 1000 / noteLengths[i];
tone(buzzerPin, melodyHz[i]);
delay(noteDuration);
noTone(buzzerPin);
int silenceGap = noteDuration * 0.3; // The critical 30% gap
delay(silenceGap);
- ช่องว่าง 30% นี้สร้าง "จังหวะกระเด้ง" ให้กับเพลง electronic dance!
การจัดการหน่วยความจำด้วย PROGMEM
เพลงอิเล็กทรอนิกส์ขนาดใหญ่ความยาว 3 นาทีประกอบด้วยจำนวนเต็มในอาร์เรย์นับพัน
- หากคุณประกาศ
int melody[] = { ... }, Arduino compiler จะเก็บเพลงทั้งหมดไว้ใน SRAM ขนาดเล็ก 2 Kilobyte ของ Uno ซึ่งจะทำให้ชิปค้างและหยุดทำงานทันที - คุณต้องแทรก
PROGMEMmacro:const int melody[] PROGMEM = { ... }; - สิ่งนี้บังคับให้ระบบบันทึกข้อมูลเพลงลงบน Flash Storage ขนาด 32 Kilobyte (ฮาร์ดไดรฟ์)
- เมื่อวนซ้ำผ่านลูป คุณจะดึงข้อมูลออกมาอย่างช้าๆ โดยใช้
pgm_read_word_near(&melody[i])!
ส่วนประกอบที่จำเป็น
- Arduino Uno/Nano/Leonardo.
- One 5V Passive Piezoelectric Buzzer.
- 100-Ohm Resistor.
- อาร์เรย์ C++ ที่ซับซ้อนและซ้อนกันอย่างสูง ซึ่งประกอบด้วยข้อมูล piano-roll midi สำหรับ Astronomia ทั้งหมดที่ถูก transpose แล้ว!