Σε αυτό το έργο πρόκειται να χτίσουμε ένα κομμάτι ψυχαγωγίας χρησιμοποιώντας το Arduino. Όλοι έχουμε αυτήν τη συνήθεια να πατάμε Τραπέζι ή Στυλό για τη δημιουργία τυχαίας μουσικής. Φυσικά δεν μπορεί να θεωρηθεί καλός συμπεριφορά, αλλά όλοι μας αρέσει να το κάνουμε τουλάχιστον μία φορά. Γι 'αυτό σκέφτηκα να το πάω στο επόμενο επίπεδο χρησιμοποιώντας την ικανότητα του Arduino να παίζει τόνους. Μόλις δημιουργήσετε αυτό το έργο, θα μπορούσατε να δημιουργήσετε ήχους πατώντας τα δάχτυλά σας σε οτιδήποτε αγώγιμο και να δημιουργήσετε τους δικούς σας ρυθμούς, σαν να παίζετε πιάνο στην παλάμη σας. Ακούγεται εντάξει, ας το δημιουργήσουμε.
Απαιτούμενα στοιχεία:
Τα υλικά που απαιτούνται για αυτό το έργο παρατίθενται παρακάτω, δεν είναι υποχρεωτικό να παραμείνουμε στο ίδιο. Μόλις αποκτήσετε την ιδέα, μπορείτε να χρησιμοποιήσετε τον δικό σας τρόπο δημιουργίας της.
- Arduini Pro Mini
- Ηχείο Peizo
- Αισθητήρας Flex
- Γάντια δάχτυλων
- 10Κ αντιστάσεις
- BC547 Τρανζίστορ
- Μπαταρία 9V
Διάγραμμα κυκλώματος και επεξήγηση:
Το διάγραμμα κυκλώματος για αυτό το πιάνο Arduino Palm εμφανίζεται παρακάτω.
Το έργο χρησιμοποιεί συνολικά τέσσερις αισθητήρες, δηλαδή δύο αισθητήρες flex και δύο ζεύγη Darlington που λειτουργούν ως αισθητήρας αφής. Έχουμε επίσης χρησιμοποιήσει δύο αντιστάσεις pull down R1 και R2 αξίας 10k η καθεμία, οι οποίες θα λειτουργήσουν ως αντίσταση pull down για τον αισθητήρα Flex. Εδώ ο αισθητήρας Flex χρησιμοποιείται για τη δημιουργία τριών διαφορετικών τόνων χρησιμοποιώντας ένα δάχτυλο, με βάση το πόσο έχει λυγίσει. Έτσι μπορούμε να παράγουμε 6 ήχους χρησιμοποιώντας δύο δάχτυλα. Μάθετε εδώ για τον αισθητήρα Flex.
Ντάρλινγκτον Ζεύγος:
Πριν προχωρήσουμε, είναι σημαντικό να γνωρίζουμε τι είναι το Darlington και πώς ακριβώς λειτουργεί στο έργο μας. Το ζεύγος Darlington μπορεί να οριστεί ως δύο διπολικά τρανζίστορ που συνδέονται με τέτοιο τρόπο ώστε το ρεύμα που ενισχύεται από το πρώτο να ενισχύεται περαιτέρω από το δεύτερο τρανζίστορ. Ένα ζευγάρι Darlington φαίνεται στην παρακάτω εικόνα:
Όπως φαίνεται παραπάνω, χρησιμοποιήσαμε δύο τρανζίστορ BC547 των οποίων οι συλλέκτες είναι δεμένοι να μαζευτούν και ο πομπός του πρώτου τρανζίστορ συνδέεται με τη βάση του δεύτερου τρανζίστορ. Αυτό το κύκλωμα λειτουργεί ως ενισχυτής με κέρδος, που σημαίνει ότι οποιοδήποτε μικρό σήμα δίνεται στη βάση του πρώτου τρανζίστορ είναι αρκετό για να προκαλέσει πόλωση στη βάση του δεύτερου τρανζίστορ. Το σώμα μας λειτουργεί ως έδαφος εδώ, οπότε όποτε αγγίζουμε τη βάση του τρανζίστορ, το δεύτερο τρανζίστορ γίνεται προκατειλημμένο. Χρησιμοποιώντας αυτό προς όφελός μας, έχουμε δημιουργήσει τον αισθητήρα αφής για αυτό το έργο.
Οι ακίδες αριθ. 2 και 3 είναι οι ακίδες διακοπής στο Arduino που θα τραβηχτούν ψηλά χρησιμοποιώντας εσωτερικές αντιστάσεις έλξης και στη συνέχεια αυτές οι ακίδες θα κρατηθούν στη γείωση κάθε φορά που κλείνει ο διακόπτης Darlington. Με αυτόν τον τρόπο κάθε φορά που αγγίζουμε το καλώδιο (από τη βάση του 1ου τρανζίστορ), θα προκαλείται διακοπή από το Arduino.
Χρησιμοποιώντας δύο δάχτυλα μπορεί να παράγει μόνο δύο τύπους τόνων, ως εκ τούτου έχω προσθέσει επίσης έναν αισθητήρα flex που θα αλλάξει τον τόνο με βάση το πόσο είναι λυγισμένο. Έχω προγραμματίσει να παράγω τρεις διαφορετικούς τόνους ανά δάχτυλο με βάση το πόσο λυγισμένο το δάχτυλο (αισθητήρας κάμψης). Μπορείτε να αυξήσετε τον αριθμό εάν θέλετε να έχετε περισσότερους τόνους στις άκρες των δακτύλων σας.
Έφτιαξα το πλήρες χαρτόνι σε μια σανίδα perf ώστε να ταιριάζει εύκολα στις παλάμες μου, αλλά μπορείτε επίσης να χρησιμοποιήσετε ένα breadboard. Απλώς βεβαιωθείτε ότι το σώμα σας αγγίζει το έδαφος του κυκλώματος σε κάποιο σημείο. Μόλις κολλήσετε τα πάντα, θα πρέπει να μοιάζει με αυτό
Έχω χρησιμοποιήσει δύο γάντια για να στερεώσω τα καλώδια από το ζεύγος Darlington και τον αισθητήρα κάμψης στη θέση όπως φαίνεται παραπάνω. Μπορείτε να βρείτε τη δική σας (καλύτερη περίπτωση) ιδέα να τα ασφαλίσετε στη θέση σας ενώ παίζετε τους τόνους σας.
Προγραμματισμός Arduino:
Το πρόγραμμα για αυτό το Arduino Tap Tone Generator είναι αρκετά απλό. Απλά πρέπει να προσέξουμε για διακοπές από τα καλώδια του Ντάρλινγκτον και, αν βρεθεί, πρέπει να παίξουμε τόνο που εξαρτάται από το πόσο κάμπτεται ο αισθητήρας flex Ο πλήρης κωδικός δίνεται στο τέλος αυτής της ανάρτησης, αλλά έχω εξηγήσει μερικά σημαντικά κομμάτια παρακάτω.
Σημείωση: Αυτό το πρόγραμμα λειτουργεί με τη βοήθεια της βιβλιοθήκης "pitches.h". Επομένως, βεβαιωθείτε ότι έχετε προσθέσει το αρχείο κεφαλίδας στο πρόγραμμά σας προτού το μεταγλωττίσετε. Μπορείτε να κατεβάσετε το αρχείο κεφαλίδας pitches.h από εδώ.
Στη λειτουργία εγκατάστασης , αρχικοποιούμε τους ακροδέκτες 2 και 3 ως είσοδο με pull-up αντιστάσεις. Τους δηλώνουμε επίσης ως ακροδέκτες διακοπής και εκτελούμε το tone1 () όταν υπάρχει διακοπή στον ακροδέκτη 2 και τη λειτουργία tone2 () όταν υπάρχει διακοπή στον 3ο πείρο. Αυτές οι διακοπές θα ενεργοποιούνται κάθε φορά που αυτές οι ακίδες παίρνουν ΧΑΜΗΛΗ από την κατάσταση έλξης.
άκυρη ρύθμιση () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
Μέσα στη λειτουργία βρόχου , ελέγχουμε συνεχώς πόσο λυγίζει ο αισθητήρας flex. Το FlexSensor 1 μου, για παράδειγμα, έδωσε τιμές περίπου 200 όταν αφέθηκε επίπεδη και έπεσε μέχρι το 130 όταν το έσκυψα στο μέγιστο, οπότε έχω χαρτογραφήσει την τιμή από 200 έως 130 ως 1 έως 3 αφού πρέπει να παίξω 3 διαφορετικούς τύπους τόνων. Πρέπει να τροποποιήσετε αυτές τις δύο γραμμές με βάση τις τιμές του αισθητήρα Flex και τον αριθμό των τόνων.
κενό βρόχο () {flexSensor1 = χάρτης (analogRead (A0), 200,130,1,3); // Χαρτογραφήστε με τις δικές σας τιμές βάσει του ευέλικτου αισθητήρα flexSensor2 = map (analogRead (A1), 170.185,1,3). // Χαρτογραφήστε με τις δικές σας τιμές με βάση τον αισθητήρα flex}
Όπως είδαμε νωρίτερα, η λειτουργία tone1 () θα εκτελεστεί όταν εντοπιστεί διακοπή στον πείρο 2. Αυτό που συμβαίνει μέσα στη λειτουργία tone1 () εμφανίζεται παραπάνω. Εξετάζουμε τις τιμές του FlexSensor1 και παίζουμε έναν τόνο με βάση την τιμή flexSesnor. Οι ήχοι θα παιχτούν χρησιμοποιώντας τη λειτουργία Tone του Arduino. Έχουμε εξηγήσει τη λειτουργία tone () στο προηγούμενο έργο μας.
κενό τόνο1 () {if (flexSensor1 == 1) τόνος (8, NOTE_D4,50); αλλιώς εάν (flexSensor1 == 2) τόνος (8, NOTE_A3,50); αλλιώς εάν (flexSensor1 == 3) τόνος (8, NOTE_G4,50); αλλιώς τόνος (8, NOTE_D4,50); }
Η παρακάτω γραμμή χρησιμοποιείται για την αναπαραγωγή του τόνου. Μπορείτε να παίξετε όποιον τόνο είναι διαθέσιμος στο αρχείο κεφαλίδας "pitches.h". Η παραπάνω γραμμή για παράδειγμα αναπαράγει το NOTE_A3 στο pin για διάρκεια 50 milli seconds.
τόνος (8, NOTE_A3,50); // τόνος (PinNum, Όνομα σημείωσης, Διάρκεια);
Εργαζόμενος:
Μόλις το υλικό σας είναι έτοιμο, ανεβάστε τον κωδικό και τοποθετήστε τον στα δάχτυλά σας. Βεβαιωθείτε ότι το σώμα σας αγγίζει το έδαφος του κυκλώματος σε κάποιο σημείο. Τώρα απλώς αγγίξτε οποιοδήποτε αγώγιμο υλικό ή το σώμα σας και θα πρέπει να μπορείτε να ακούσετε τον αντίστοιχο τόνο. Μπορείτε να παίξετε τη δική σας μελωδία ή μουσική πατώντας σε διαφορετικά διαστήματα και διαφορετικές θέσεις.
Το παρακάτω βίντεο δείχνει την πλήρη εργασία του έργου. Ελπίζω να σας άρεσε η κατασκευή του έργου, τυχόν προτάσεις ή ερωτήσεις μπορούν να αναρτηθούν στην παρακάτω ενότητα σχολίων. Ελέγξτε επίσης το Arduino Audio Player και το Arduino Tone Generator Project.