Innholdsfortegnelse:

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

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

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

Av IanCummingFølg Mer av forfatteren:

Arduino intervallometer
Arduino intervallometer
Ikke bare en timetimer
Ikke bare en timetimer
Ikke bare en timetimer
Ikke bare en timetimer
Ett pikseltermometer
Ett pikseltermometer
Ett pikseltermometer
Ett pikseltermometer

Om: Jeg liker å lage ting fra raketter til elektronikk. Mer om IanCumming »

Velkommen alle sammen

Det er nesten høytid og antall butikker har begynt å slukke sine festlige dekorasjoner, jeg tenkte at det var omtrent riktig tidspunkt å bygge noen musikalske eventyr!

Trinn 1: Deler brukt

Deler brukt
Deler brukt

Jeg bruker følgende:

  • 12 lysdioder
  • 12 Strømbegrensende motstander
  • 1 ULN 2803 Darlington Transistor Array
  • Noen hoppetråder
  • En piezo -høyttaler
  • Et brødbrett og
  • en Arduino
  • For å lage strengen med eventyrlys brukte jeg 5 ledninger fra en Ethernet -kabel

Trinn 2: Koden

// GLOBAL VARS int barTime = 1200; // 8/8 = 1000 ms byte nrLEDS = 4; // 4 Base -lysdioder, Du kan legge til mange parallelle byte -lysdioder = {3, 4, 5, 6}; byte høyttaler = 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 er notatnummer da // Notatlengde i 8.s konst byte -mønster = {// Mønsterdata 0b0001, 0b0010, 0b0100, 0b1000, // Bits korresponderer til 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, 0b 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b1100, 0b0000 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};

For det første erklærer jeg mine variabler, de interessante er Song and Pattern.

  • Sangen lagrer melodien; i dette tilfellet er det Jingle bells.
  • Mønsteret lagrer på og av posisjoner i bitene av verdiene i matrisen.

Tilpassede funksjoner

// FUNKSJONER int noteToHz (int note) {// Convert a Note Nr. til Frekvens flytefrekvens = 440 * (pow (1.059463094359, note-21)); // -21 gir deg notat 1 ved C3 (I Think) return int (freq); // Resultatene er nøyaktige til 1 Hz} ugyldige lys -LED -er (byte PORT_X) {// Kontroll -LEDs tilstand for (int q = 0; q

De to funksjonene jeg har vil gjøre følgende:

  • Beregn frekvensen for tonefunksjonen i sløyfen
  • Slå LED -lampene på eller av avhengig av verdien som sendes til funksjonen

Oppsettfunksjon

ugyldig oppsett () {// setup OUTPUT pins pinMode (høyttaler, OUTPUT); for (int t = 0; t <nrLEDS; t ++) {pinMode (leds [t], OUTPUT); }}

I oppsettfunksjonen satte jeg de nødvendige pinnene til OUTPUT.

Sløyfe -funksjon

void loop () {// Music Loop for (int t = 0; t <songLength; t ++) {// Notes, Length and play melody int note = noteToHz (song [t * 2]); int lengde = ((sang [(t * 2) +1] * barTime) / 8); tone (høyttaler, notat, lengde - 50); // Blinkende lys! lightLEDs (mønster [t % patternLength]); forsinkelse (lengde); } // Silence Loop int randomSilence = tilfeldig (1000, 5000); for (int t = 0; t

Jeg har 2 sløyfer i Main Loop -funksjonen. En sangsløyfe og en stillhetssløyfe

Sangløkken vil lese dataene fra sangmatrisen, spille noten ved hjelp av tonefunksjonen

Sangløkken vil,

  • Les dataene fra sangmatrisen,
  • Spill deretter noten ved hjelp av tonefunksjonen
  • Lys opp LED -ene, lesemønsterarray.

I Silence loop

bare lysdiodene lyser

Koble til Arduino og last opp koden. (Koble den deretter fra)

Trinn 3: Start kretsen

Starter kretsen
Starter kretsen
Starter kretsen
Starter kretsen
Starter kretsen
Starter kretsen
Starter kretsen
Starter kretsen

Jeg skal begynne med lysstrengen

  • Jeg brukte ledning fra en Ethernet -kabel og loddet tre lysdioder parallelt fire ganger, og passet på å skille ut lysdiodene jevnt over omtrent 2 meter
  • Jeg loddet anoden til hver ledning til en enkelt ledning.
  • Deretter katoden til hver LED til 4 separate ledninger. Med en motstand selvfølgelig
  • Jeg gjentok denne prosessen 3 ganger for å få en streng på 12 lysdioder, og jeg satte toppstifter på enden av de 5 ledningene

Koble de positive og jordede skinnene til brødbrettet

Trinn 4: ULN2803

ULN2803
ULN2803
ULN2803
ULN2803
ULN2803
ULN2803

Plasser ULN2308 Chip på brødbrettet

ULN2308 er en transistormatrischip; fra databladet kan jeg se

  • Den pinnen 1 er en inngang som slår pinne 18 "PÅ"
  • Pin 2 slår på 17. Etc.
  • Pin 9 er malt
  • Koble pinne 9 på brikken til bakkeskinnen
  • Koble den positive skinnen til en rekkeklemme, en strimmel over pinne 18. (Du vil se hvorfor om et minutt)
  • Koble pinne 1 på brikken til pinne 3 på Arduino
  • 2 går til 4
  • 3 av brikken går til 5 og
  • 4 går til pinne 6 på Arduino
  • Legg LED -strengen på brødbrettet. Der den vanlige anodetråden er koblet til stripen tilkoblet 5 volt. Resten av fe -lyspinnene skal gå til pinne 18, 17, 16 og 15 på brikken.

Trinn 5: Legge til lyd

Legger til lyd
Legger til lyd
  • Koble Piezo -høyttaleren mellom to klemmelister
  • Koble den negative polen til Piezo -elementet til jord og
  • Den andre enden av høyttaleren til pinne 11

Trinn 6: Konklusjon

Konklusjon
Konklusjon
Konklusjon
Konklusjon

Jeg har en lysstråle som tilfeldig vil spille jinglebells for å minne meg om at det er høytiden.

Anbefalt: