Innehållsförteckning:

Musical Fairy Lights: 6 steg (med bilder)
Musical Fairy Lights: 6 steg (med bilder)

Video: Musical Fairy Lights: 6 steg (med bilder)

Video: Musical Fairy Lights: 6 steg (med bilder)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Juli
Anonim
Image
Image

Av IanCummingFölj mer av författaren:

Arduino intervallometer
Arduino intervallometer
Inte bara en timtimer
Inte bara en timtimer
Inte bara en timtimer
Inte bara en timtimer
En pixeltermometer
En pixeltermometer
En pixeltermometer
En pixeltermometer

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

Delar som används
Delar som används

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

Startar kretsen
Startar kretsen
Startar kretsen
Startar kretsen
Startar kretsen
Startar kretsen
Startar kretsen
Startar 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

ULN2803
ULN2803
ULN2803
ULN2803
ULN2803
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

Lägger till ljud
Lägger 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

Slutsats
Slutsats
Slutsats
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.

Rekommenderad: