Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Av IanCummingFölj mer av författaren:
Om: Jag gillar att göra saker från raketer till elektronik. Mer om IanCumming »
Välkommen alla
Det är nästan högsäsong och antalet butiker har börjat släcka sina festliga dekorationer, jag trodde att det var ungefär rätt tid att bygga några musikaliska sagoljus!
Steg 1: Använda delar
Jag kommer att använda följande:
- 12 lysdioder
- 12 Strömbegränsande motstånd
- 1 ULN 2803 Darlington Transistor Array
- Några bygeltrådar
- En piezohögtalare
- En brödbräda och
- en Arduino
- För att göra strängen med sagoljus använde jag 5 ledningar från en Ethernet -kabel
Steg 2: Koden
// GLOBAL VARS int barTime = 1200; // 8/8 = 1000ms byte nrLEDS = 4; // 4 bas -lysdioder, Du kan lägga till många parallella byte -lysdioder = {3, 4, 5, 6}; bytehögtalare = 11; byte patternLength = 64; // mönster Length byte songLength = 51; const byte song = {// 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}; // Strukturen är notnummer sedan // Notlängd i åttonde konst byte mönster = {// Mönsterdata 0b0001, 0b0010, 0b0100, 0b1000, // Bits korrigerar till Leds in Array 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b110, 0b, 0b, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b1100, 0b1100 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};
Först och främst deklarerar jag mina variabler, de intressanta är Song och Pattern.
- Låten lagrar låten; i det här fallet är det Jingle bells.
- Mönstret lagrar på och av positioner i bitarna av värdena i matrisen.
Anpassade funktioner
// FUNKTIONER int noteToHz (int note) {// Convert a Note Nr. till Frequency float freq = 440 * (pow (1.059463094359, not 21)); // -21 ger dig not 1 vid C3 (I Think) return int (freq); // Resultaten är korrekta för 1hz} void lightLEDs (byte PORT_X) {// Control LED's State for (int q = 0; q
De två funktioner jag har kommer att göra följande:
- Beräkna frekvensen för tonfunktionen i slingan
- slå på eller stäng av lysdioderna beroende på värdet som överförs till funktionen
Inställningsfunktion
void setup () {// setup OUTPUT pins pinMode (högtalare, OUTPUT); för (int t = 0; t <nrLEDS; t ++) {pinMode (leds [t], OUTPUT); }}
I inställningsfunktionen ställer jag in stiften som krävs på OUTPUT.
Loop -funktion
void loop () {// Music Loop for (int t = 0; t <songLength; t ++) {// Notes, Length and play melody int note = noteToHz (song [t * 2]); int length = ((song [(t * 2) +1] * barTime) / 8); ton (högtalare, anteckning, längd - 50); // Blinkande ljus! lightLEDs (mönster [t % patternLength]); fördröjning (längd); } // Silence Loop int randomSilence = random (1000, 5000); för (int t = 0; t
Jag har två slingor i Main Loop -funktionen. En sångslinga och en tystnadsslinga
Sångslingan kommer att läsa data från sångmatrisen, spela noten med tonfunktionen
Sångslingan kommer,
- Läs data från sångmatrisen,
- Spela sedan noten med tonfunktionen
- Tänd lysdioderna, läsmönstermatris.
I Silence loop
bara lysdioderna lyser
Anslut Arduino och ladda upp koden. (Koppla sedan ur den)
Steg 3: Starta kretsen
Jag ska börja med ljussträngen
- Jag använde tråd från en Ethernet -kabel och lödde 3 lysdioder parallellt fyra gånger och såg till att lysdioderna var jämnt över cirka 2 meter
- Jag lödde anoden på varje led till en enda tråd.
- Sedan katoden för varje LED till 4 separata ledningar. Med ett motstånd förstås
- Jag upprepade denna process 3 gånger för att få en sträng med 12 lysdioder och jag satte huvudstiften på slutet av de 5 trådarna
Anslut de positiva och slipade skenorna till brödbrädan
Steg 4: ULN2803
Lägg ULN2308 -chipet på brödbrädet
ULN2308 är ett transistormatrischip; från databladet kan jag se
- Pin 1 är en ingång som slår pin 18 "ON"
- Pin 2 tänder 17. Etc.
- Pin 9 är slipad
- Anslut stiftets 9 stift till markskenan
- Anslut den positiva skenan till en plintremsa, en remsa ovanför stift 18. (Du kommer att se varför om en minut)
- Anslut stift 1 på chipet till stift 3 på Arduino
- 2 går till 4
- 3 av chipet går till 5 och
- 4 går till stift 6 på Arduino
- Placera LED -strängen på brödbrädan. Där den gemensamma anodtråden är ansluten till remsan ansluten till 5 volt. Resten av fairy light pins ska gå till pin 18, 17, 16 och 15 i chipet.
Steg 5: Lägga till ljud
- Anslut Piezo -högtalaren mellan 2 plintremsor
- Anslut Piezo -elementets negativa pol till jord och
- Den andra änden av högtalaren till stift 11
Steg 6: Slutsats
Jag har en ljusslinga som slumpmässigt kommer att spela klingande klockor för att påminna mig om att det är högtid.