Inhaltsverzeichnis:
- Schritt 1: Verwendete Teile
- Schritt 2: Der Code
- Schritt 3: Starten der Schaltung
- Schritt 4: Der ULN2803
- Schritt 5: Ton hinzufügen
- Schritt 6: Fazit
Video: Musikalische Lichterketten - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Von IanCummingFolgen Sie mehr vom Autor:
Über: Ich mache gerne Sachen von Raketen bis hin zu Elektronik. Mehr über IanCumming »
Herzlich willkommen
Es ist fast die Weihnachtszeit und viele Geschäfte haben angefangen, ihre festlichen Dekorationen aufzuhängen, ich dachte, es ist an der Zeit, ein paar musikalische Lichterketten zu bauen!
Schritt 1: Verwendete Teile
Ich werde folgendes verwenden:
- 12 LEDs
- 12 Strombegrenzungswiderstände
- 1 ULN 2803 Darlington-Transistor-Array
- Einige Überbrückungsdrähte
- Ein Piezo-Lautsprecher
- Ein Steckbrett und
- ein Arduino
- Um die Lichterkette herzustellen, habe ich 5 Drähte aus einem Ethernet-Kabel verwendet
Schritt 2: Der Code
// GLOBALE VARS int barTime = 1200; // 8/8 = 1000ms Byte nrLEDS = 4; // 4 Basis-LEDs, Sie können viele parallele Byte-LEDs hinzufügen = { 3, 4, 5, 6}; Byte-Lautsprecher = 11; Bytemusterlänge = 64; // Musterlänge Byte songLength = 51; const byte song = {// Jingle Bells Daten 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}; // Die Struktur ist die Notennummer, dann // NoteLength in 8ths const Byte pattern = { //Pattern Data 0b0001, 0b0010, 0b0100, 0b1000, //Bits entsprechen den LEDs in Array 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0100b, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, };
Zuerst deklariere ich meine Variablen, die interessantesten sind Song und Pattern.
- Das Lied speichert die Melodie; in diesem Fall sind es Jingle Bells.
- Das Muster speichert Ein- und Aus-Positionen in den Bits der Werte im Array.
Benutzerdefinierte Funktionen
//FUNCTIONS int noteToHz(int note) { // Konvertieren einer Note Nr. to Frequency float freq = 440 * (pow(1.059463094359, note-21)); // -21 gibt dir Note 1 bei C3 (glaube ich) return int(freq); // Die Ergebnisse sind auf 1 Hz genau. Void lightLEDs (byte PORT_X) { // Kontroll-LEDs-Zustand für (int q = 0; q
Die beiden Funktionen, die ich habe, werden Folgendes tun:
- Berechnen Sie die Frequenz für die Tonfunktion in der Schleife
- schalten die LEDs je nach dem an die Funktion übergebenen Wert ein oder aus
Setup-Funktion
Void setup () {// OUTPUT-Pins einrichten PinMode (Lautsprecher, OUTPUT); for (int t = 0; t < nrLEDS; t ++) { pinMode (leds [t], AUSGANG); } }
In der Setup-Funktion setze ich die benötigten Pins auf OUTPUT.
Loop-Funktion
void loop () {// Music Loop for (int t = 0; t < songLength; t++) {// Noten, Länge und Melodie spielen int note = noteToHz(song[t * 2]); int length = ((song[(t * 2)+1] * barTime) / 8); Ton (Lautsprecher, Note, Länge - 50); // Blitzende Lichter! lightLEDs(Muster[t % MusterLänge]); Verzögerung (Länge); } // Stille Schleife int randomSilence = random(1000, 5000); für (int t = 0;t
Ich habe 2 Loops in der Main Loop-Funktion. Ein Song-Loop und ein Stille-Loop
Die Song-Loop liest die Daten aus dem Song-Array, spielt die Note mit der Tone-Funktion
Die Song-Loop wird
- Lesen Sie die Daten aus dem Song-Array,
- Spielen Sie die Note mit der Tonfunktion dann
- Beleuchten Sie die LEDs, Lesemuster-Array.
In der Silence-Schleife
nur die LEDs leuchten
Schließen Sie das Arduino an und laden Sie den Code hoch. (Dann den Stecker ziehen)
Schritt 3: Starten der Schaltung
Ich fange mit der Lichterkette an
- Ich habe Draht von einem Ethernet-Kabel verwendet und viermal parallel 3 LEDs gelötet, um sicherzustellen, dass die LEDs gleichmäßig über etwa 2 Meter verteilt sind
- Ich lötete die Anode von jedem zu einem einzelnen Draht.
- Dann die Kathode jeder LED auf 4 separate Drähte. Natürlich mit Widerstand
- Ich habe diesen Vorgang dreimal wiederholt, um eine Reihe von 12 LEDs zu erhalten, und ich habe Kopfstifte an das Ende der 5 Drähte gesteckt
Verbinden Sie die Plus- und Masseschienen mit dem Steckbrett
Schritt 4: Der ULN2803
Platzieren Sie den ULN2308 Chip auf dem Steckbrett
Der ULN2308 ist ein Transistor-Array-Chip; aus dem datenblatt kann ich sehen
- Dieser Pin 1 ist ein Eingang, der Pin 18 auf "ON" schaltet
- Pin 2 schaltet 17 ein. Usw.
- Pin 9 ist Masse
- Verbinden Sie Pin 9 des Chips mit der Masseschiene
- Verbinden Sie die positive Schiene mit einer Klemmleiste, eine Leiste über Pin 18. (Sie werden in einer Minute sehen, warum)
- Verbinden Sie Pin 1 des Chips mit Pin 3 des Arduino
- 2 geht zu 4
- 3 des Chips geht an 5 und
- 4 geht an Pin 6 des Arduino
- Legen Sie die LED-Kette auf das Steckbrett. Wo der gemeinsame Anodendraht mit dem Streifen verbunden ist, der an 5 Volt angeschlossen ist. Der Rest der Lichterketten sollte zu den Pins 18, 17, 16 und 15 des Chips gehen.
Schritt 5: Ton hinzufügen
- Verbinden Sie den Piezo-Lautsprecher zwischen 2 Klemmleisten
- Verbinden Sie den Minuspol des Piezoelements mit Masse und
- Das andere Ende des Lautsprechers an Pin 11
Schritt 6: Fazit
Ich habe eine Lichterkette, die zufällig Jingle Bells spielen wird, um mich daran zu erinnern, dass es Weihnachtszeit ist.
Empfohlen:
Musikalische Schuhe: 17 Schritte (mit Bildern)
Musikalische Schuhe: Dieses Projekt ist eine unterhaltsame Möglichkeit, Beats zu erzeugen, während Sie auf die Tanzfläche gehen. Es ist auch ein großartiges Projekt für Anfänger, das Arduino, Bluetooth und weiche leitfähige Stoffschalter verwendet. Vor ein paar Monaten stieß ich auf eine einfache Möglichkeit, Sounddateien auszulösen, die