Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Door IanCummingVolg meer door de auteur:
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
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
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
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
- 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
Ik heb een reeks lichtjes die willekeurig jingle bells zullen spelen om me eraan te herinneren dat het de feestdagen zijn.