Πίνακας περιεχομένων:

Arduino Κιθάρα Jack Key Holder With Jack Recognition & OLED: 7 Steps
Arduino Κιθάρα Jack Key Holder With Jack Recognition & OLED: 7 Steps

Βίντεο: Arduino Κιθάρα Jack Key Holder With Jack Recognition & OLED: 7 Steps

Βίντεο: Arduino Κιθάρα Jack Key Holder With Jack Recognition & OLED: 7 Steps
Βίντεο: My first time using a tube screamer 2024, Νοέμβριος
Anonim
Image
Image
Arduino Guitar Jack Key Holder With Jack Recognition & OLED
Arduino Guitar Jack Key Holder With Jack Recognition & OLED

Εισαγωγή:

Αυτό το διδακτικό θα αναφέρει λεπτομερώς την κατασκευή της θήκης κλειδιού προσθηκών Guitar Jack με βάση το Arduino

Αυτή είναι η πρώτη μου διδάσκουσα, οπότε αντέχετε μαζί μου καθώς ενδέχεται να κάνω αλλαγές / ενημερώσεις στην πορεία

Βήμα 1: Μέρη & εργαλεία

Ανταλλακτικά & Εργαλεία
Ανταλλακτικά & Εργαλεία
Ανταλλακτικά & Εργαλεία
Ανταλλακτικά & Εργαλεία
Ανταλλακτικά & Εργαλεία
Ανταλλακτικά & Εργαλεία

Τα περισσότερα από τα ανταλλακτικά που αγόρασα από το Amazon.co.uk ή το eBay, μερικά τα είχα ήδη κλωτσήσει - Εδώ είναι μια λίστα με αυτά που θα χρειαστείτε.

Οι σύνδεσμοι Amazon είναι όλοι σύνδεσμοι θυγατρικών, μπορεί να μπορείτε να βρείτε φθηνότερα αλλού - χρησιμοποιώ το Amazon Prime πολύ, οπότε το Amazon έτυχε να είναι το προσανατολισμό μου.

Iθελα να διατηρήσω αυτή την κατασκευή αρκετά χαμηλού κόστους και φιλική προς τον προϋπολογισμό. Θα μπορούσατε να χρησιμοποιήσετε μια μεγαλύτερη οθόνη TFT όπως το επιθυμείτε, καθώς και ένα διαφορετικό Arduino. Μην χρησιμοποιείτε NANO, καθώς θα καταρρεύσει λόγω μεγάλης χρήσης μνήμης. Ο κωδικός χρησιμοποιεί περίπου το 72% της μνήμης RAM του Pro Micro και είναι σταθερός, αλλά από τη δοκιμή, ένα NANO θα σπάσει και θα παγώσει.

(Περισσότερες λεπτομέρειες στο βήμα του Κώδικα.)

ΜΕΡΗ

1x Arduino Pro Micro -

1x 0,96 OLED με κίτρινη και μπλε οθόνη -

4x WS2812 «Pixels» -

1x DS3231 RTC -

4x 1/4 Mono Jack (as όσα θέλετε) - Amazon (Gold) ή Amazon (Silver) ή eBay.co.uk

1x Mixed Resistor Pack -

4x 1/4 Κιθάρα Βύσματα -

1x Καλώδιο επέκτασης καλωδίου Micro USB -

4x βίδες M3

ΕΡΓΑΛΕΙΑ & ΥΛΙΚΑ

- Συγκολλητικό σίδερο (Αυτό είναι αυτό που αγόρασα - ένα TS100 - καθώς ήρθε με επιπλέον συμβουλές

- Συγκολλητής

- Hot Glue Gun (https://amzn.to/2UTd9PN)

- Σύρμα (https://amzn.to/2VK2ILU)

- Κόφτες/απογυμνωτές καλωδίων (https://amzn.to/2KzqUzp)

- Υπηρεσία τρισδιάστατου εκτυπωτή ή τρισδιάστατης εκτύπωσης

ΠΡΟΑΙΡΕΤΙΚΑ - Αυτά τα στοιχεία είναι προαιρετικά, ανάλογα με τον τρόπο που επιλέγετε να συνδέσετε τα πάντα

- Veroboard/Stripboard (https://amzn.to/2KzMFPE)

- Βιδωτοί ακροδέκτες (2 πόλοι | 3 πόλοι | 4 πόλοι)

- Κεφαλίδες PCB (https://amzn.to/2X7RjWf)

Βήμα 2: Τρισδιάστατη εκτύπωση της θήκης

Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης
Τρισδιάστατη εκτύπωση της θήκης

Εκτύπωσα το δικό μου στο Creality CR-10S, χρησιμοποιώντας το Black PLA+ (https://amzn.to/2X2SDtE)

Τύπωσα σε ύψος 0,2 στρώσεων, με 25% πλήρωση.

Βήμα 3: Το βάζουμε όλα μαζί + σχηματικό

Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά
Το βάζουμε όλα μαζί + σχηματικά

Το πώς επιλέγετε να συνδέσετε το Arduino σας εξαρτάται αποκλειστικά από εσάς - προσωπικά επέλεξα να κάνω τον εαυτό μου «ασπίδα». Για να φτιάξω την ασπίδα, έχω κολλήσει γυναικείες κεφαλίδες σε veroboard για να ταιριάζει με το Pro Micro, στη συνέχεια πρόσθεσα μια ράγα +5v και GND, στα αντίθετα άκρα. Έχω χρησιμοποιήσει καλώδιο βραχυκυκλωτήρα για να συνδέσω το +5v με τη ράγα μου τώρα 5v, και έκανα το ίδιο για το GND. Στη συνέχεια πρόσθεσα τις αντιστάσεις μου 4x 100k, το ένα άκρο συνδεδεμένο με +5v για όλες και στη συνέχεια η άλλη πλευρά συνδέεται με A0, A1, A2 & A3 αντίστοιχα. Έχω προσθέσει στη συνέχεια βιδωτούς ακροδέκτες σε αναλογικούς πείρους A0, A1, A2 & A3 και επίσης ακίδες 2 (SDA), 3 (SCL) & 4

Μετρήστε την καλωδίωση και κόψτε τα σε κατάλληλα μήκη. Ξεκίνησα πρώτα με τις λυχνίες LED WS2812 Pixel - η ΠΡΩΤΗ λυχνία LED WS2812 συνδέεται με +5v από το Arduino, GND από το Arduino και το DIN συνδέεται με την καρφίτσα 4. Μετά από αυτό, τα υπόλοιπα 3 είναι αλυσοδεμένα μαζί, αλυσοδεμένα όλα τα 5v> 5v, GND> GND καρφίτσες και DOUT από ένα Pixel, συνδέεται με DIN του επόμενου. Μόλις συγκολληθούν, πιέστε τα απαλά στις τετράγωνες τρύπες στο επάνω μέρος και τοποθετήστε ζεστή κόλλα στη θέση τους και επίσης για να προστατέψετε το πίσω μέρος από τυχαίες συνδέσεις ή σορτς.

Μετά τις λυχνίες LED, έβγαλα στη συνέχεια τις υποδοχές για την κιθάρα. Ένας πείρος του καθενός συνδέεται με το GND και, στη συνέχεια, ο 2ος πείρος του καθενός συνδέεται αντίστοιχα με τα Α0, Α1, Α2 & Α3. Αυτή είναι η υποδοχή 1, στο A0, η υποδοχή 2 στο A1, η υποδοχή 3 στο A2 και η υποδοχή 4 στο A3.

Στη συνέχεια, κόλλησα 4 καλώδια στις συνδέσεις OLED και κόψα όσο το δυνατόν περισσότερη συγκόλληση. Θέλετε να συνδέσετε τα καλώδια σας από το πίσω μέρος της οθόνης, επομένως κολλάτε στο μπροστινό μέρος της οθόνης.

Προσοχή στις καρφίτσες! Ορισμένα OLED έχουν GND εξωτερικά, μετά VCC, μερικά έχουν VCC εξωτερικά και μετά GND

Μόλις κολλήσετε και έχετε κόψει ή ισοπεδώσει τη σύνδεση συγκόλλησης όσο το δυνατόν περισσότερο, πιέστε απαλά την οθόνη στη θέση της. Είναι λίγο στενή προσαρμογή από το σχεδιασμό, αλλά να γνωρίζετε ότι διαφορετικές ανοχές εκτύπωσης μπορεί να επηρεάσουν αυτό και έτσι ίσως χρειαστεί να κάνετε κάποια μικρή μετα-επεξεργασία για να το προσαρμόσετε. Μόλις είναι στη θέση του, τοποθετήστε λίγο ζεστό κόλλα σε κάθε μία από τις 4 γωνίες για να το κρατήσετε στη θέση του.

Συνδέστε τα πάντα για να ταιριάζουν με το Σχήμα και τις εικόνες, και μόλις είστε ευχαριστημένοι, μπορείτε στη συνέχεια να κολλήσετε θερμά το Pro Micro και το RTC Clock στη θέση τους και στη συνέχεια να συνδέσετε την επέκταση USB στο Pro Micro.

Χρησιμοποίησα μια επέκταση micro USB έτσι ώστε α) το USB να μπορεί να χρησιμοποιηθεί για την παροχή ρεύματος, αλλά περισσότερο, β) έτσι ώστε να είναι δυνατός ο επαναπρογραμματισμός του Pro Micro αν χρειαστεί χωρίς να χωριστούν τα πάντα

Μόλις είστε ευχαριστημένοι, βιδώστε τη θήκη μαζί χρησιμοποιώντας τις 4 βίδες

Βήμα 4: Τα βύσματα

Τα Βύσματα!
Τα Βύσματα!
Τα βύσματα!
Τα βύσματα!
Τα Βύσματα!
Τα Βύσματα!

Ο τρόπος που λειτουργεί αυτό είναι ότι, για όλες τις προθέσεις και σκοπούς, μέρος του σχεδιασμού λειτουργεί ως "ωμόμετρο". Το ωμόμετρο είναι ένα όργανο μέτρησης της ηλεκτρικής αντίστασης. Τα περισσότερα πολύμετρα έχουν αυτήν τη λειτουργία, επιλέγοντας την κλίμακα και στη συνέχεια μετράτε μια αντίσταση για να βρείτε την τιμή της. Η βασική αρχή είναι ότι συνδέετε μια ΓΝΩΣΗ αντίσταση στο +ve, η οποία στη συνέχεια συνδέεται με μια ΑΓΝΩΣΤΗ αντίσταση, η οποία συνδέεται με -ve. Η ένωση μεταξύ των 2 αντιστάσεων συνδέεται με τον αναλογικό πείρο Arduino έτσι ώστε να μπορεί να διαβάσει την τάση και να υπολογίσει την αντίσταση.

Λειτουργεί σαν διαχωριστής τάσης και υπολογίζει την αντίσταση του άγνωστου αντιστάτη.

Ως δίκτυο διαχωριστή τάσης αντιστάσεων R1 και R2, Vout = Vin * R2 / (R1 + R2) - Χρησιμοποιούμε 100k για τη γνωστή μας αντίσταση (R1). Αυτό μας δίνει την "πτώση τάσης"

Από αυτό, μπορούμε τώρα να επεξεργαστούμε την αντίσταση του άγνωστου αντιστάτη (R2), R2 = Vout * R1 / (Vin - Vout) - όπου R1 είναι η αντίστασή μας 100k (100, 000 ohm)

Χρησιμοποιώντας διαφορετική αντίσταση σε κάθε υποδοχή βύσματος που θέλετε να χρησιμοποιήσετε, μπορείτε στη συνέχεια να προσαρμόσετε τον κωδικό ανάλογα με την υποδοχή που χρησιμοποιείται.

Χρησιμοποιώ 4 βύσματα βύσματος. Επέλεξα να χρησιμοποιήσω:

Γνωστή αντίσταση (x4) - 100k

Βύσμα Jack 1 - 5,6k

Jack Plug 2 - 10k

Jack Plug 3 - 22k

Jack Plug 4 - 39k

Θα μπορούσατε φυσικά να το επεκτείνετε και να κωδικοποιήσετε όσα θέλετε.

Βήμα 5: Ο Κώδικας

Ο κώδικας
Ο κώδικας

Πρώτον, θα χρειαστείτε το Arduino IDE, διαθέσιμο από εδώ:

Θα πρέπει επίσης να βεβαιωθείτε ότι έχετε επίσης μερικές Βιβλιοθήκες Arduino:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (Προαιρετικό):

Μια σημείωση σχετικά με την επιλογή του σωστού πίνακα "Arduino". Αρχικά ξεκίνησα αυτό το έργο με ένα Arduino Nano, επειδή είναι εξαιρετικά φθηνά με περίπου £ 3 £ 4 στο Ηνωμένο Βασίλειο ή μόλις 1,50 £ αν αγοράζετε από το AliExpress (αλλά μην σας πειράζει η αναμονή 30-50 ημερών). Το πρόβλημα με το Nano είναι ότι το SRAM είναι 2 KB (2048 byte). Αυτό το σκίτσο χρησιμοποιεί 1728 byte δυναμικής μνήμης με καθολικές μεταβλητές. Αυτό είναι το 84% του SRAM, αφήνοντας μόνο 320 byte δωρεάν για τοπικές μεταβλητές. Αυτό ήταν ανεπαρκές και θα προκαλούσε το Nano να κλειδώσει και να παγώσει.

Το Pro Micro (Leonardo) έχει 2,5K SRAM (2560 byte), που σημαίνει ότι υπάρχουν 694 byte δωρεάν για τοπικές μεταβλητές (Το σκίτσο χρησιμοποιεί το 72% του SRAM του Pro Micro). Μέχρι στιγμής αυτό έχει αποδειχθεί απόλυτα επαρκές και σταθερό για τη χρήση μου. Εάν σκοπεύετε να χρησιμοποιήσετε πολλά βύσματα βύσματος, τότε ίσως θελήσετε να σκεφτείτε να χρησιμοποιήσετε κάτι με περισσότερο SRAM.

Όσον αφορά τον χώρο αποθήκευσης Flash, αυτό το σκίτσο χρησιμοποιεί 88% (25252 byte) των 30k (το ATMega328p [Nano] και το ATMega32u4 [Pro Micro] έχουν και τα δύο 32k, αλλά τα 2k προορίζονται για το bootloader)

Έχω γράψει εκατοντάδες σκίτσα Arduino όλα αυτά τα χρόνια, αλλά είμαι χόμπι - οπότε λάβετε υπόψη ότι ορισμένα μέρη του κώδικα μπορεί να είναι αναποτελεσματικά ή μπορεί να υπάρχουν σενάρια «καλύτερων τρόπων για να το κάνετε αυτό». Τούτου λεχθέντος, λειτουργεί τέλεια για μένα και είμαι ευχαριστημένος με αυτό. Χρησιμοποίησα βιβλιοθήκες που ΠΡΕΠΕΙ να λειτουργούν στους περισσότερους πίνακες, είτε πρόκειται για AVR (τα πιο βασικά του Arduino) είτε για SAMD21 (έχω μια χούφτα συσκευών Cortex M0)

Wantedθελα να εμφανίσω ένα διαφορετικό γραφικό με βάση την υποδοχή που χρησιμοποιήθηκε επίσης. Αν θέλετε να φτιάξετε το δικό σας, αυτός είναι ένας λαμπρός απλός οδηγός για το πώς να δημιουργήσετε τον πίνακα C για εικόνες που θα χρησιμοποιηθούν με αυτήν την οθόνη:

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

Βεβαιωθείτε ότι χρησιμοποιείτε το PROGMEM για τα γραφικά σας. Π.χ:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Από σχεδίαση, η οθόνη θα "λήξει" μετά από 5 δευτερόλεπτα και θα επιστρέψει στην εμφάνιση της ώρας.

Οι περισσότερες από τις Ρυθμίσεις μπορούν να βρεθούν στις Ρυθμίσεις. H, συγκεκριμένα, το όνομα των σχετικών βυσμάτων βύσματος κωδικοποιείται εδώ:

#define PLUG1 "KEYS"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIC "NA"

Υπάρχουν επίσης ορισμένα σημαντικά μέρη του κώδικα μέσα στο Variables.h

float R1 = 96700.0;

float R2 = 96300.0; float R3 = 96500.0; float R4 = 96300.0;

Αυτές είναι οι ΓΝΩΣΤΕΣ τιμές αντίστασης, σε ωμ, καθενός από τους 4 αντιστάτες.

R1 συνδεδεμένο με A0, R2 σε A1, R3 σε A2 και R4 σε A3.

Συνιστάται να μετρήσετε τις αντιστάσεις 100k χρησιμοποιώντας ένα πολύμετρο και να χρησιμοποιήσετε την ακριβή τιμή της αντίστασης. Πάρτε τη μέτρηση της αντίστασης μόλις συνδεθούν όλα. (Αλλά δεν είναι ενεργοποιημένο).

Όταν επιλέγετε αντιστάσεις για τα βύσματα βύσματος, βεβαιωθείτε ότι υπάρχει ένα καλό κενό ωμ μεταξύ τους και όταν τα κωδικοποιείτε, δώστε στον εαυτό σας ένα ωραίο εύρος χαμηλότερο και υψηλότερο από την αντίσταση που επιλέξατε. Εδώ είναι αυτό που χρησιμοποίησα στον κωδικό μου:

float P1_MIN = 4000.0, P1_MAX = 7000.0; // 5,6Κ

float P2_MIN = 8000.0, P2_MAX = 12000.0; // 10K float P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K float P4_MIN = 36000.0, P4_MAX = 42000.0; // 39Κ

Ο λόγος για αυτό είναι να ληφθεί υπόψη η αναλογική ανάγνωση και οι μικρές διακυμάνσεις τάσης κλπ

Λοιπόν, αυτό που συμβαίνει είναι ότι αν η ανιχνευθείσα αντίσταση είναι μεταξύ 4000 ohms και 7000 ohms, υποθέτουμε ότι έχετε χρησιμοποιήσει αντίσταση 5,6k και έτσι ο κώδικας θα το δει ως Jack Plug 1. Εάν η μετρηθείσα αντίσταση είναι μεταξύ 8000 ohms και 12000 ohms, η υπόθεση είναι ότι είναι μια αντίσταση 10k και είναι το Jack Plug 2 και ούτω καθεξής.

Εάν πρέπει να κάνετε κάποια αποσφαλμάτωση (Μην αφήνετε σχόλια στην "παραγωγή", επειδή η σειριακή εντοπισμός σφαλμάτων χρησιμοποιεί πολύτιμο έμβολο) απλώς σχολιάστε τις γραμμές που χρειάζεστε στην κορυφή των Ρυθμίσεων.h

//#define SERIAL_DEBUG

//#define WAIT_FOR_SERIAL

Για να σχολιάσετε, απλώς αφαιρέστε το //…. για να σχολιάσετε ξανά τη γραμμή, προσθέστε ξανά το // στο μπροστινό μέρος της γραμμής.

Το SERIAL_DEBUG επιτρέπει τον σειριακό εντοπισμό σφαλμάτων και τη χρήση πραγμάτων όπως (για παράδειγμα)

Serial.println (F ("γεια σου κόσμο"));

Το WAIT_FOR_SERIAL είναι ένα επιπλέον βήμα, που σημαίνει ότι, μέχρι να ανοίξετε τη Σειριακή οθόνη, ο κώδικας δεν θα συνεχιστεί. Αυτό σας βοηθά να διασφαλίσετε ότι δεν θα χάσετε κανένα σημαντικό σειριακό μήνυμα. - ΠΟΤΕ ΑΦΗΣΤΕ ΑΥΤΟ ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ

Εάν αφήσετε το WAIT_FOR_SERIAL ενεργοποιημένο, δεν θα μπορείτε να χρησιμοποιήσετε τη θήκη κλειδιών σε οποιοδήποτε περιβάλλον "πραγματικού κόσμου", καθώς θα κολλήσει περιμένοντας την σειριακή οθόνη Arduino IDE πριν συνεχίσει στον κύριο βρόχο του σκίτσου. Μόλις ολοκληρώσετε τον εντοπισμό σφαλμάτων, βεβαιωθείτε ότι έχετε αποσυνδέσει ξανά αυτήν τη γραμμή και ανεβάστε ξανά το σκίτσο σας για παραγωγή/ολοκλήρωση.

Όταν χρησιμοποιείτε την επιλογή SERIAL_DEBUG, ο κωδικός μου περιέχει τα ακόλουθα:

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = sizeof (SOCKET_1234_HAS_PLUGTYPE_X)/sizeof (SOCKET_1234_HAS_PLUGTYPE_X [0]); για (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Serial.print (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); if (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Serial.print (υποδοχή+1); Serial.print (F ("έχει αντοχή:")); Serial.println (αντίσταση); } #τέλος εαν

Η τελευταία σειρά Serial.print θα σας πει ποια είναι η αντίσταση, σε ωμ, της τελευταίας τοποθετημένης υποδοχής. Έτσι, μπορείτε επίσης να χρησιμοποιήσετε αυτό το σκίτσο ως ωμόμετρο για να ελέγξετε την αντίσταση ενός βύσματος υποδοχής.

Βήμα 6: Σημειώσεις

Νομίζω ότι έχω καλύψει τα πάντα, αλλά παρακαλώ σχολιάστε και θα κάνω ό, τι καλύτερο μπορώ για να διαβάσω και να απαντήσω όταν μπορώ:)

Συγγνώμη για το κάπως φτωχό βίντεο - δεν έχω τρίποδο, ρύθμιση κωδικοποίησης ή κατάλληλο χώρο εργασίας, για να το πω έτσι, γυρίστηκε (άσχημα) κρατώντας το τηλέφωνο στο ένα χέρι και προσπαθώντας να το δείξει με το άλλο.

Ευχαριστώ για την ανάγνωση.

Συνιστάται: