Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Από τον IanCumming Ακολουθήστε περισσότερα από τον συγγραφέα:
Σχετικά: Μου αρέσει να φτιάχνω πράγματα από ρουκέτες έως ηλεκτρονικά. Περισσότερα για το IanCumming »
Καλώς ορίσατε όλοι
Είναι σχεδόν η εορταστική περίοδος και πολλά καταστήματα έχουν αρχίσει να βγάζουν τις γιορτινές τους διακοσμήσεις, σκέφτηκα ότι είναι η κατάλληλη στιγμή για να φτιάξουμε μερικά μουσικά φώτα!
Βήμα 1: Μέρη που χρησιμοποιούνται
Θα χρησιμοποιήσω τα εξής:
- 12 LED
- 12 Αντίσταση περιορισμού ρεύματος
- 1 ULN 2803 Darlington Transistor Array
- Μερικά καλώδια βραχυκυκλωτήρων
- Ένα πίεζο ηχείο
- Ένα Breadboard και
- ένα Arduino
- Για να φτιάξω τη σειρά των φώτων νεράιδων χρησιμοποίησα 5 καλώδια από ένα καλώδιο Ethernet
Βήμα 2: Ο κώδικας
// GLOBAL VARS int barTime = 1200; // 8/8 = 1000ms byte nrLEDS = 4; // 4 LED βάσης, Μπορείτε να προσθέσετε πολλά παράλληλα led byte = {3, 4, 5, 6}; byte ηχείο = 11; byte patternLength = 64; // μοτίβο Μήκος byte τραγούδιLength = 51; const byte τραγούδι = {// 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}; // Η δομή είναι Σημείωση αριθμού στη συνέχεια // Σημείωση μήκους στο πρότυπο const byte του 8ου = {// Δεδομένα μοτίβου 0b0001, 0b0010, 0b0100, 0b1000, // Bits corrispond to 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, 0b0011, 0b0001, 0b1001, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};
Αρχικά δηλώνω τις μεταβλητές μου, με τις πιο ενδιαφέρουσες να είναι το Song and Pattern.
- Το τραγούδι αποθηκεύει τη μελωδία. σε αυτή την περίπτωση είναι Jingle bells.
- Το μοτίβο αποθηκεύει θέσεις ενεργοποίησης και απενεργοποίησης στα δυαδικά ψηφία των τιμών του πίνακα.
Προσαρμοσμένες λειτουργίες
// FUNCTIONS int noteToHz (int note) {// Μετατροπή σημείωσης αριθ. έως Frequency float freq = 440 * (pow (1.059463094359, note-21)); // -21 σας δίνει τη σημείωση 1 στο C3 (νομίζω) return int (freq). // Τα αποτελέσματα είναι ακριβή σε 1hz} άδειες λυχνίες LED (byte PORT_X) {// Έλεγχος κατάστασης LED για (int q = 0; q
Οι δύο λειτουργίες που έχω θα κάνουν τα εξής:
- Υπολογίστε τη συχνότητα για τη λειτουργία τόνου στον βρόχο
- ανάβετε ή απενεργοποιείτε τα LED ανάλογα με την τιμή που μεταβιβάζεται στη λειτουργία
Λειτουργία εγκατάστασης
void setup () {// setup OUTPUT pin pin pinMode (ηχείο, OUTPUT); για (int t = 0; t <nrLEDS; t ++) {pinMode (leds [t], OUTPUT); }}
Στη λειτουργία ρύθμισης έθεσα τις καρφίτσες που απαιτούνται σε OUTPUT.
Λειτουργία βρόχου
void loop () {// Music Loop for (int t = 0; t <songLength; t ++) {// Σημειώσεις, Διάρκεια και αναπαραγωγή της μελωδίας int note = noteToHz (τραγούδι [t * 2]); int μήκος = ((τραγούδι [(t * 2) +1] * barTime) / 8); τόνος (ηχείο, σημείωση, μήκος - 50). // Φώτα που αναβοσβήνουν! lightLEDs (μοτίβο [t % patternLength]); καθυστέρηση (μήκος)? } // Silence Loop int randomSilence = random (1000, 5000); για (int t = 0; t
Έχω 2 βρόχους στη συνάρτηση Κύριος βρόχος. Ένας βρόχος τραγουδιού και ένας βρόχος σιωπής
Ο βρόχος τραγουδιού θα διαβάσει τα δεδομένα από τη σειρά τραγουδιών, θα παίξει τη νότα χρησιμοποιώντας τη λειτουργία τόνου
Ο βρόχος του τραγουδιού θα
- Διαβάστε τα δεδομένα από τη σειρά τραγουδιών,
- Στη συνέχεια, αναπαράγετε τη νότα χρησιμοποιώντας τη λειτουργία τόνου
- Φωτίστε τον πίνακα μοτίβου ανάγνωσης των LED.
Στο βρόχο Σιωπή
ανάβουν μόνο τα LED
Συνδέστε το Arduino και ανεβάστε τον κωδικό. (Τότε αποσυνδέστε το)
Βήμα 3: Εκκίνηση του κυκλώματος
Θα ξεκινήσω με τη σειρά των φώτων
- Χρησιμοποίησα σύρμα από καλώδιο Ethernet και κόλλησα 3 LED παράλληλα τέσσερις φορές, φροντίζοντας να χωρίσω ομοιόμορφα τα LED σε απόσταση περίπου 2 μέτρων
- Συγκόλλησα την άνοδο του κάθε led σε ένα μόνο καλώδιο.
- Στη συνέχεια, η κάθοδος κάθε LED σε 4 ξεχωριστά καλώδια. Με αντίσταση φυσικά
- Επανέλαβα αυτή τη διαδικασία 3 φορές για να πάρω μια σειρά από 12 LED και έβαλα ακίδες κεφαλίδας στο τέλος των 5 καλωδίων
Συνδέστε τις θετικές και τις αλεσμένες ράγες στο breadboard
Βήμα 4: Το ULN2803
Τοποθετήστε το τσιπ ULN2308 στην σανίδα ψωμιού
Το ULN2308 είναι ένα τσιπ συστοιχίας τρανζίστορ. από το φύλλο δεδομένων που μπορώ να δω
- Αυτός ο πείρος 1 είναι μια είσοδος που γυρίζει τον πείρο 18 "ON"
- Η καρφίτσα 2 ενεργοποιείται 17. Και τα λοιπά.
- Ο πείρος 9 είναι αλεσμένος
- Συνδέστε τον πείρο 9 του τσιπ στη ράγα γείωσης
- Συνδέστε τη θετική ράγα σε μια τερματική ταινία, μία ταινία πάνω από τον πείρο 18. (Θα δείτε γιατί σε ένα λεπτό)
- Συνδέστε τον πείρο 1 του τσιπ με τον πείρο 3 του Arduino
- 2 πηγαίνει στο 4
- 3 του τσιπ πηγαίνει στο 5 και
- 4 πηγαίνει στην καρφίτσα 6 του Arduino
- Τοποθετήστε το κορδόνι LED στη σανίδα ψωμιού. Όπου το κοινό καλώδιο ανόδου συνδέεται με τη λωρίδα συνδεδεμένη στα 5 βολτ. Οι υπόλοιπες καρφίτσες των νεράιδων πρέπει να πάνε στην ακίδα 18, 17, 16 και 15 του τσιπ.
Βήμα 5: Προσθήκη ήχου
- Συνδέστε το ηχείο Piezo μεταξύ 2 λωρίδων ακροδεκτών
- Συνδέστε τον αρνητικό πόλο του στοιχείου Piezo στη γείωση και
- Το άλλο άκρο του ηχείου στο pin 11
Βήμα 6: Συμπέρασμα
Έχω μια σειρά από φωτιστικά που θα παίξουν τυχαία jingle bells για να μου θυμίσουν ότι είναι η εορταστική περίοδος.