Inhoudsopgave:

Muzikale lichtjes: 6 stappen (met afbeeldingen)
Muzikale lichtjes: 6 stappen (met afbeeldingen)

Video: Muzikale lichtjes: 6 stappen (met afbeeldingen)

Video: Muzikale lichtjes: 6 stappen (met afbeeldingen)
Video: Wanneer een douche nemen te duur is... 2024, Juli-
Anonim
Image
Image

Door IanCummingVolg meer door de auteur:

Arduino-intervalmeter
Arduino-intervalmeter
Niet alleen een uurtimer
Niet alleen een uurtimer
Niet alleen een uurtimer
Niet alleen een uurtimer
Een pixelthermometer
Een pixelthermometer
Een pixelthermometer
Een pixelthermometer

Over: Ik maak graag dingen van raketten tot elektronica. Meer over IanCumming »

Welkom iedereen

Het is bijna de feestdagen en veel winkels zijn begonnen met het uithangen van hun feestelijke decoraties, ik dacht dat het de juiste tijd was om wat muzikale kerstverlichting te bouwen!

Stap 1: Gebruikte onderdelen

Gebruikte onderdelen
Gebruikte onderdelen

Ik zal het volgende gebruiken:

  • 12 LED's
  • 12 Stroombegrenzende weerstanden
  • 1 ULN 2803 Darlington-transistorarray
  • Sommige jumperdraden
  • Een piëzo-luidspreker
  • Een breadboard en
  • een Arduino
  • Om de reeks kerstverlichting te maken, heb ik 5 draden van een Ethernet-kabel gebruikt

Stap 2: De code

// GLOBALE VARS int barTime = 1200; // 8/8 = 1000ms byte nrLEDS = 4; // 4 basis-LED's, u kunt veel parallelle byte-leds toevoegen = {3, 4, 5, 6}; byte-luidspreker = 11; bytepatroonLengte = 64; // patroon Lengte 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 }; // De structuur is dan het nootnummer // NoteLength in 8th's const byte-patroon = { // Pattern Data 0b0001, 0b0010, 0b0100, 0b1000, // Bits komen overeen met 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, 0b0110, 0b0010, 01,0101, 0b000 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0011,001, 0b 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, };

Allereerst declareer ik mijn variabelen, de interessante zijn Song en Pattern.

  • Het nummer slaat de melodie op; in dit geval zijn het jingle bells.
  • Het patroon slaat aan en uit-posities op in de bits van de waarden in de array.

Aangepaste functies

//FUNCTIES int noteToHz(int note) { // Converteer een nootnummer. to Frequency float freq = 440 * (pow(1.059463094359, noot-21)); // -21 geeft je noot 1 bij C3 (I Think) return int(freq); // Resultaten zijn nauwkeurig tot op 1 hz } void lightLEDs (byte PORT_X) { // Status van controle-LED's voor (int q = 0; q

De twee functies die ik heb zullen het volgende doen:

  • Bereken de frequentie voor de toonfunctie in de lus
  • schakel de LED's in of uit, afhankelijk van de waarde die aan de functie is doorgegeven

Instelfunctie

void setup () {// setup OUTPUT-pinnen pinMode (luidspreker, OUTPUT); for(int t = 0; t <nrLEDS; t++){ pinMode(leds[t], OUTPUT); } }

In de setup-functie stel ik de benodigde pinnen in op OUTPUT.

Loop-functie

void loop () {// Music Loop for (int t = 0; t < songLength; t ++) {// Notes, Length en speel de melodie int note = noteToHz (song [t * 2]); int lengte = ((lied [(t * 2)+1] * barTijd) / 8); toon (luidspreker, noot, lengte - 50); // Flitsende lichten! lightLED's (patroon [t % patroonlengte]); vertraging (lengte); } // Silence Loop int randomSilence = willekeurig (1000, 5000); voor (int t = 0;t

Ik heb 2 loops in de Main Loop-functie. Een songloop en een stilteloop

De songloop leest de gegevens uit de songarray, speelt de noot af met behulp van de toonfunctie

De songloop zal,

  • Lees de data uit de song array,
  • Speel de noot met behulp van de toonfunctie dan
  • Verlicht de LED's, lees de patroonreeks.

In de stiltelus

alleen de LED's branden

Sluit de Arduino aan en upload de code. (Vervolgens loskoppelen)

Stap 3: Het circuit starten

Het circuit starten
Het circuit starten
Het circuit starten
Het circuit starten
Het circuit starten
Het circuit starten
Het circuit starten
Het circuit starten

Ik ga beginnen met de lichtslinger

  • Ik gebruikte draad van een Ethernet-kabel en soldeerde drie LED's vier keer parallel, waarbij ik ervoor zorgde dat de LED's gelijkmatig verdeeld werden over ongeveer 2 meter
  • Ik gesoldeerd de anode van elke geleid tot een enkele draad.
  • Dan de kathode van elke led naar 4 aparte draden. Met een weerstand natuurlijk
  • Ik herhaalde dit proces 3 keer om een reeks van 12 LED's te krijgen en ik plaatste header-pinnen aan het uiteinde van de 5 draden

Sluit de positieve en grondrails aan op het breadboard

Stap 4: De ULN2803

De ULN2803
De ULN2803
De ULN2803
De ULN2803
De ULN2803
De ULN2803

Plaats de ULN2308 Chip op het breadboard

De ULN2308 is een transistorarraychip; uit het gegevensblad kan ik zien

  • Die pin 1 is een ingang die pin 18 "AAN" zet
  • Pin 2 zet 17 aan. Enzovoort.
  • Pin 9 is massa
  • Sluit pin 9 van de chip aan op de grondrail
  • Sluit de positieve rail aan op een klemmenstrook, één strook boven pin 18. (U zult zo zien waarom)
  • Sluit pin 1 van de chip aan op pin 3 van de Arduino
  • 2 gaat naar 4
  • 3 van de chip gaat naar 5 en
  • 4 gaat naar pin 6 van de Arduino
  • Plaats de LED-string op het breadboard. Waar de gemeenschappelijke anodedraad is aangesloten op de strip die is aangesloten op 5 volt. De rest van de fairy light-pinnen moet naar pin 18, 17, 16 en 15 van de chip gaan.

Stap 5: Geluid toevoegen

Geluid toevoegen
Geluid toevoegen
  • Sluit de piëzo-luidspreker aan tussen 2 klemmenstroken
  • Verbind de minpool van het piëzo-element met aarde en
  • Het andere uiteinde van de luidspreker op pin 11

Stap 6: Conclusie

Conclusie
Conclusie
Conclusie
Conclusie

Ik heb een reeks lichtjes die willekeurig jingle bells zullen spelen om me eraan te herinneren dat het de feestdagen zijn.

Aanbevolen: