Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Επισκόπηση
- Βήμα 2: Συναρμολόγηση του κυκλώματος
- Βήμα 3: Πώς λειτουργεί το κύκλωμα
- Βήμα 4: Πώς λειτουργεί ο κώδικας
- Βήμα 5: Προγραμματισμός τραγουδιού
- Βήμα 6: Ανατροφοδότηση
Βίντεο: Δημιουργία τραγουδιών με Arduino και DC Motor: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Τις προάλλες, κάνοντας αναζήτηση σε κάποια άρθρα για το Arduino, εντόπισα ένα ενδιαφέρον έργο που χρησιμοποίησε βηματικά μοτέρ που ελέγχονταν από το Arduino για να δημιουργήσει μικρές μελωδίες. Το Arduino χρησιμοποίησε έναν πείρο PWM (Pulse Width Modulation) για να τρέξει το βηματικό μοτέρ σε συγκεκριμένες συχνότητες, που αντιστοιχούν σε μουσικές νότες. Με το χρονοδιάγραμμα των συχνοτήτων που έπαιζαν πότε, ακούστηκε μια καθαρή μελωδία από το βηματικό μοτέρ.
Ωστόσο, όταν το δοκίμασα μόνος μου, διαπίστωσα ότι ο βηματικός κινητήρας που έχω δεν μπορεί να περιστραφεί αρκετά γρήγορα για να δημιουργήσει έναν τόνο. Αντ 'αυτού, χρησιμοποίησα έναν κινητήρα DC, ο οποίος είναι σχετικά απλός στον προγραμματισμό και τη σύνδεση σε ένα Arduino. Ένα κοινό L293D IC μπορεί να χρησιμοποιηθεί για την εύκολη οδήγηση του κινητήρα από έναν πείρο Arduino PWM και η λειτουργία εγγενών τόνων () στο Arduino μπορεί να δημιουργήσει την απαραίτητη συχνότητα. Προς έκπληξή μου, δεν βρήκα παραδείγματα ή έργα που χρησιμοποιούν έναν κινητήρα DC στο διαδίκτυο, και έτσι αυτό το Instructables είναι η απάντησή μου για να το διορθώσω. Ας αρχίσουμε!
ΥΣΤΕΡΟΓΡΑΦΟ. Υποθέτω ότι έχετε ήδη κάποια εμπειρία με το Arduino και είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού και το υλικό του. Θα πρέπει να γνωρίζετε τι είναι οι πίνακες, τι είναι το PWM και πώς να το χρησιμοποιήσετε και πώς λειτουργεί η τάση και το ρεύμα, για να αναφέρουμε μερικά πράγματα. Εάν δεν είστε ακόμα εκεί ή μόλις ξεκινήσατε το Arduino, μην ανησυχείτε: δοκιμάστε αυτήν τη σελίδα έναρξης από τον επίσημο ιστότοπο Arduino και επιστρέψτε όποτε είστε έτοιμοι.:)
Προμήθειες
- Arduino (χρησιμοποίησα UNO αλλά μπορείτε να χρησιμοποιήσετε διαφορετικό Arduino αν θέλετε)
- Τυπικός κινητήρας 5V DC, κατά προτίμηση ένας με δυνατότητα τοποθέτησης ανεμιστήρα (δείτε την εικόνα στην ενότητα "Συναρμολόγηση του κυκλώματος"
- L293D IC
- Τόσα πλήκτρα όσες σημειώσεις στο τραγούδι που θέλετε να παίξετε
- Breadboard
- Jumper Wires
Βήμα 1: Επισκόπηση
Δείτε πώς λειτουργεί το έργο: το Arduino θα δημιουργήσει ένα τετράγωνο κύμα σε μια δεδομένη συχνότητα, το οποίο θα εξάγει στο L293D. Το L293D είναι συνδεδεμένο με μια εξωτερική τροφοδοσία που χρησιμοποιεί για να τροφοδοτεί τον κινητήρα με τη συχνότητα που δίνει το Arduino. Αποτρέποντας τον άξονα του κινητήρα DC να περιστρέφεται, ο κινητήρας ακούγεται να σβήνει και να ενεργοποιείται στη συχνότητα, η οποία παράγει έναν τόνο ή νότα. Μπορούμε να προγραμματίσουμε το Arduino να παίζει σημειώσεις όταν πατάτε τα κουμπιά ή να τα παίζει αυτόματα.
Βήμα 2: Συναρμολόγηση του κυκλώματος
Για να συναρμολογήσετε το κύκλωμα, απλώς ακολουθήστε το παραπάνω διάγραμμα Fritzing.
Συμβουλή: Η σημείωση από τον κινητήρα ακούγεται καλύτερα όταν ο άξονας δεν περιστρέφεται. Έβαλα έναν ανεμιστήρα στον άξονα του κινητήρα μου και χρησιμοποίησα κάποια κολλητική ταινία για να κρατήσω τον ανεμιστήρα ακίνητο ενώ ο κινητήρας λειτουργούσε (δείτε την εικόνα). Αυτό απέτρεψε την περιστροφή του άξονα και παρήγαγε έναν καθαρό, ηχητικό τόνο. Σως χρειαστεί να κάνετε κάποιες τροποποιήσεις για να πάρετε έναν καθαρό τόνο από τον κινητήρα σας.
Βήμα 3: Πώς λειτουργεί το κύκλωμα
Το L293D είναι ένα IC που χρησιμοποιείται για την οδήγηση συσκευών σχετικά υψηλής τάσης, υψηλού ρεύματος, όπως ρελέ και κινητήρες. Το Arduino δεν μπορεί να οδηγήσει τους περισσότερους κινητήρες απευθείας από την έξοδό του (και το πίσω EMF από τον κινητήρα μπορεί να βλάψει το ευαίσθητο ψηφιακό κύκλωμα του Arduino), οπότε ένα IC όπως το L293D μπορεί να χρησιμοποιηθεί με εξωτερική τροφοδοσία για εύκολη οδήγηση του κινητήρα DC. Η εισαγωγή σήματος στο L293D θα εξάγει το ίδιο σήμα στον κινητήρα DC χωρίς κίνδυνο ζημιάς στο Arduino.
Πάνω είναι ένα pinout/λειτουργικό σχήμα του L293D από το φύλλο δεδομένων του. Δεδομένου ότι οδηγούμε μόνο 1 κινητήρα (το L293D μπορεί να οδηγήσει 2), χρειαζόμαστε μόνο τη μία πλευρά του IC. Ο πείρος 8 είναι ισχύς, οι ακίδες 4 και 5 είναι GND, ο ακροδέκτης 1 είναι η έξοδος PWM από το Arduino και οι ακίδες 2 και 7 ελέγχουν την κατεύθυνση του κινητήρα. Όταν ο πείρος 2 είναι Υ HIGHΟΣ και ο πείρος 7 είναι ΧΑΜΗΛΟΣ, ο κινητήρας περιστρέφεται προς τη μία κατεύθυνση και όταν ο πείρος 2 είναι ΧΑΜΗΛΟΣ και ο πείρος 7 είναι Υ HIGHΟΣ, ο κινητήρας περιστρέφεται από την άλλη πλευρά. Δεδομένου ότι δεν μας ενδιαφέρει με ποιον τρόπο περιστρέφεται ο κινητήρας, δεν έχει σημασία αν οι ακίδες 2 και 7 είναι χαμηλές ή υψηλές, αρκεί να διαφέρουν μεταξύ τους. Οι ακίδες 3 και 6 συνδέονται με τον κινητήρα. Μπορείτε να συνδέσετε τα πάντα στην άλλη πλευρά (καρφίτσες 9-16) αν θέλετε, αλλά να γνωρίζετε ότι οι ακίδες τροφοδοσίας και PWM αλλάζουν θέσεις.
Σημείωση: Εάν χρησιμοποιείτε ένα Arduino που δεν διαθέτει αρκετές ακίδες για κάθε κουμπί, μπορείτε να χρησιμοποιήσετε ένα δίκτυο αντιστάσεων για να συνδέσετε όλους τους διακόπτες σε έναν αναλογικό πείρο, όπως σε αυτά τα εγχειρίδια. Το πώς λειτουργεί αυτό είναι εκτός του πεδίου αυτού του έργου, αλλά αν έχετε χρησιμοποιήσει ποτέ ένα R-2R DAC θα πρέπει να το βρείτε οικείο. Λάβετε υπόψη ότι η χρήση ενός αναλογικού πείρου θα απαιτήσει την επανεγγραφή μεγάλων τμημάτων του κώδικα, καθώς η βιβλιοθήκη κουμπιών δεν μπορεί να χρησιμοποιηθεί με αναλογικές ακίδες.
Βήμα 4: Πώς λειτουργεί ο κώδικας
Για να διευκολύνω τον χειρισμό όλων των κουμπιών, χρησιμοποίησα μια βιβλιοθήκη που ονομάζεται "Button" του madleech. Πρώτα απ 'όλα συμπεριέλαβα τη βιβλιοθήκη. Στη συνέχεια, στις γραμμές 8-22, καθόρισα τις συχνότητες για τις νότες που απαιτούνται για την αναπαραγωγή Twinkle, Twinkle, Little Star (το παράδειγμα του τραγουδιού), την καρφίτσα που θα χρησιμοποιήσω για την οδήγηση του L293D και τα κουμπιά.
Στη λειτουργία ρύθμισης, ξεκίνησα το Serial, τα κουμπιά και έθεσα την ακίδα οδήγησης για το L293D σε κατάσταση εξόδου.
Τέλος, στον κύριο βρόχο έλεγξα αν έχει πατηθεί κάποιο κουμπί. Εάν έχει, το Arduino αναπαράγει την αντίστοιχη νότα και εκτυπώνει το όνομα της σημείωσης στο Serial Monitor (χρήσιμο για να γνωρίζετε ποιες σημειώσεις είναι ποιες στο ψωμί σας). Εάν κυκλοφορήσει μια νότα, το arduino σταματά κάθε ήχο με noTone ().
Δυστυχώς, λόγω του τρόπου δομής της βιβλιοθήκης, δεν μπόρεσα να βρω έναν τρόπο να ελέγξω εάν ένα κουμπί έχει πατηθεί ή απελευθερωθεί με λιγότερο ρητό τρόπο από ό, τι η χρήση 2 όρων ανά νότα. Ένα άλλο ελάττωμα με αυτόν τον κώδικα είναι ότι αν πατήσετε δύο κουμπιά ταυτόχρονα και στη συνέχεια αφήσετε ένα από αυτά, και οι δύο σημειώσεις θα σταματήσουν, επειδή το noTone () σταματά να δημιουργούνται σημειώσεις ανεξάρτητα από τη σημείωση που την ενεργοποίησε.
Βήμα 5: Προγραμματισμός τραγουδιού
Αντί να χρησιμοποιείτε κουμπιά για αναπαραγωγή σημειώσεων, μπορείτε επίσης να προγραμματίσετε το Arduino να παίζει αυτόματα μια μελωδία για εσάς. Εδώ είναι μια τροποποιημένη έκδοση του πρώτου σκίτσου που παίζει Twinkle, Twinkle, Little Star στον κινητήρα. Το πρώτο μέρος του σκίτσου είναι το ίδιο - καθορίζοντας τις συχνότητες των σημειώσεων και το tonePin. Φτάνουμε στο νέο μέρος στο bpm = "100". Ρυθμίζω τους ρυθμούς ανά λεπτό (bpm) και στη συνέχεια χρησιμοποιώ κάποια μαθηματικά για να υπολογίσω τον αριθμό των χιλιοστών του δευτερολέπτου ανά ρυθμό που ισοδυναμεί το bpm. Για να το κάνω αυτό, χρησιμοποίησα μια τεχνική που ονομάζεται ανάλυση διαστάσεων (μην ανησυχείτε - δεν είναι τόσο δύσκολο όσο ακούγεται). Εάν έχετε παρακολουθήσει ποτέ ένα μάθημα χημείας γυμνασίου, σίγουρα χρησιμοποιήσατε ανάλυση διαστάσεων για να κάνετε μετατροπή μεταξύ μονάδων. Οι πλωτήρες () είναι εκεί για να διασφαλιστεί ότι τίποτα στην εξίσωση δεν στρογγυλοποιείται μέχρι το τέλος για ακρίβεια.
Αφού έχουμε τον αριθμό των ms/beat, τον διαιρούσα ή τον πολλαπλασιάζω κατάλληλα για να βρω τις τιμές χιλιοστών του δευτερολέπτου των διαφορετικών διάρκειας των νότες που βρίσκονται στη μουσική. Στη συνέχεια, δημιουργώ μια σειρά από κάθε νότα με χρονολογική σειρά και μια άλλη με τη διάρκεια κάθε νότας. Είναι σημαντικό το ευρετήριο κάθε νότας να ταιριάζει με το δείκτη της διάρκειάς του, διαφορετικά, η μελωδία σας θα ηχήσει. Έβαλα τις σημειώσεις για Twinkle, Twinkle, Little Star εδώ ως παράδειγμα, αλλά μπορείτε να δοκιμάσετε οποιοδήποτε τραγούδι ή ακολουθία νότες θέλετε.
Η πραγματική μαγεία συμβαίνει στη λειτουργία βρόχου. Για κάθε μια από τις νότες, παίζω τον τόνο για ένα χρονικό διάστημα που καθορίστηκα στον πίνακα beat_values. Αντί να χρησιμοποιήσω καθυστέρηση εδώ, που θα είχε ως αποτέλεσμα να μην αναπαράγεται ο τόνος, κατέγραψα την ώρα από την έναρξη του προγράμματος με τη συνάρτηση millis () και τον αφαιρώ από την τρέχουσα ώρα. Όταν ο χρόνος υπερβεί τον χρόνο που προσδιόρισα τη σημείωση για να διαρκέσει στον πίνακα beat_values, σταματάω τη σημείωση. Η καθυστέρηση μετά τον βρόχο for υπάρχει για να προσθέσει ένα κενό μεταξύ των σημειώσεων, διασφαλίζοντας ότι οι επόμενες σημειώσεις με την ίδια συχνότητα δεν θα αναμειχθούν μεταξύ τους.
Βήμα 6: Ανατροφοδότηση
Αυτά για αυτό το έργο. Εάν υπάρχει κάτι που δεν καταλαβαίνετε ή εάν έχετε οποιεσδήποτε προτάσεις, μη διστάσετε να επικοινωνήσετε μαζί μου. Δεδομένου ότι αυτό είναι το πρώτο μου Instructables, θα εκτιμούσα πολύ τα σχόλια και τις προτάσεις σχετικά με τον τρόπο βελτίωσης αυτού του περιεχομένου. Θα σε δω την επόμενη φορά!
Συνιστάται:
Σύνδεση επεξεργασίας και Arduino και Make 7 Segment και Servo GUI Controller: 4 βήματα
Connecting Processing and Arduino and Make 7 Segment and Servo GUI Controller: Για ορισμένα έργα που κάνατε πρέπει να χρησιμοποιήσετε το Arduino καθώς παρέχει μια εύκολη πλατφόρμα πρωτοτύπων, αλλά η εμφάνιση γραφικών σε σειριακή οθόνη του Arduino μπορεί να διαρκέσει πολύ και είναι ακόμη και δύσκολο να γίνει. Μπορείτε να εμφανίσετε γραφήματα στο Arduino Serial Monitor bu
Δημιουργία προσαρμογέα Bluetooth Pt.2 (Δημιουργία συμβατού ηχείου): 16 βήματα
Δημιουργία προσαρμογέα Bluetooth Pt.2 (Δημιουργία συμβατού ηχείου): Σε αυτό το εκπαιδευτικό εγχειρίδιο, θα σας δείξω πώς να χρησιμοποιήσετε τον προσαρμογέα Bluetooth για να κάνετε συμβατό το παλιό ηχείο με Bluetooth. έναν προσαρμογέα Bluetooth " Σας προτείνω να το κάνετε πριν συνεχίσετε.C
Αναπαραγωγή τραγουδιών (MP3) με το Arduino χρησιμοποιώντας το PWM στο ηχείο ή τον μετασχηματιστή Flyback: 6 βήματα (με εικόνες)
Παίξτε τραγούδια (MP3) Με το Arduino χρησιμοποιώντας το PWM στο ηχείο ή το Flyback Transformer: Γεια σας παιδιά, αυτό είναι το πρώτο μου διδακτικό, ελπίζω να σας αρέσει !! Βασικά, σε αυτό το έργο έχω χρησιμοποιήσει τη σειριακή επικοινωνία μεταξύ του Arduino και του φορητού υπολογιστή μου, για τη μετάδοση δεδομένων μουσικής από το φορητό υπολογιστή μου στο Arduino. Και χρησιμοποιώντας το Arduino TIMERS t
Αυτόματη αφαίρεση ανεπιθύμητων τραγουδιών από το IPod σας: 4 βήματα
Αυτόματη κατάργηση ανεπιθύμητων τραγουδιών από το IPod σας: Αυτό το σεμινάριο θα σας δείξει πώς να χρησιμοποιήσετε το iPod σας για να επισημάνετε τραγούδια για αυτόματη διαγραφή, ώστε να μην χρειάζεται να θυμάστε να το κάνετε αργότερα. Είναι το επόμενο καλύτερο πράγμα να έχετε ένα κουμπί "διαγραφής" στο iPod σας. Και μην ανησυχείτε αυτό δεν θα διαγράψει τραγούδια από το iTu
Δημιουργία μικρών ρομπότ: Δημιουργία ενός ρομπότ μικρού κυβικού ίντσας Micro-Sumo και μικρότερο: 5 βήματα (με εικόνες)
Δημιουργία Μικρών Ρομπότ: Δημιουργία Ρομπότ Μικρού Σούμο και Μικρότερων Κυβικών ίντσας: Ακολουθούν μερικές λεπτομέρειες σχετικά με την κατασκευή μικροσκοπικών ρομπότ και κυκλωμάτων. Αυτό το διδακτικό θα καλύψει επίσης μερικές βασικές συμβουλές και τεχνικές που είναι χρήσιμες στην κατασκευή ρομπότ οποιουδήποτε μεγέθους. Για μένα, μία από τις μεγάλες προκλήσεις στα ηλεκτρονικά είναι να δούμε πόσο μικρό είναι ένα