Cuprins:

Suport cheie pentru chitară Arduino cu recunoaștere jack și OLED: 7 pași
Suport cheie pentru chitară Arduino cu recunoaștere jack și OLED: 7 pași

Video: Suport cheie pentru chitară Arduino cu recunoaștere jack și OLED: 7 pași

Video: Suport cheie pentru chitară Arduino cu recunoaștere jack și OLED: 7 pași
Video: Dorian este speriat de un interlop când face poze 😱🥊🤣 #timisoara #dorianpopa #cluj #bucuresti 2024, Iunie
Anonim
Image
Image
Suport pentru chei pentru chitară Arduino cu recunoaștere jack și OLED
Suport pentru chei pentru chitară Arduino cu recunoaștere jack și OLED

Introducere:

Această instrucțiune va detalia în detaliu construcția suportului de chei pentru pluginul Guitar Jack bazat pe Arduino

Aceasta este prima mea instruire vreodată, așa că vă rog să vă purtați cu mine, deoarece pot face modificări / actualizări pe parcurs

Pasul 1: Piese și instrumente

Piese și instrumente
Piese și instrumente
Piese și instrumente
Piese și instrumente
Piese și instrumente
Piese și instrumente

Majoritatea pieselor pe care le-am achiziționat de pe Amazon.co.uk sau eBay, unele pe care le-am avut deja - Iată o listă cu ceea ce veți avea nevoie.

Linkurile Amazon sunt toate linkuri afiliate, este posibil să găsiți mai ieftin în altă parte - Eu folosesc Amazon Prime foarte mult, așa că Amazon s-a întâmplat să fie cel mai bun lucru pentru mine.

Am vrut să păstrez această construcție destul de ieftină și prietenoasă cu bugetul. Ați putea folosi un ecran TFT mai mare, așa cum doriți, precum și un Arduino diferit. Nu utilizați un NANO, deoarece se va prăbuși din cauza utilizării mari a memoriei. Codul folosește aproximativ 72% din memoria RAM a Pro Micro și este stabil, dar din testare, un NANO se va prăbuși și va îngheța.

(Mai multe detalii în pasul Cod.)

PĂRȚI

1x Arduino Pro Micro -

1x OLED de 0,96 cu afișaj galben și albastru -

4x „Pixeli” WS2812 -

1x DS3231 RTC -

Mono Jack 4x 1/4 (Sau câte doriți) - Amazon (Gold) sau Amazon (Silver) sau eBay.co.uk

1x pachet de rezistențe mixte -

Mufe de chitară 4x 1/4 -

1x cablu micro USB Extension Cable -

4x șuruburi M3

INSTRUMENTE ȘI MATERIALE

- Fier de lipit (Acesta este cel pe care l-am cumpărat - un TS100 - deoarece a venit cu sfaturi suplimentare

- Solder

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

- Sârmă (https://amzn.to/2VK2ILU)

- Dispozitive de tăiere / decupare a firelor (https://amzn.to/2KzqUzp)

- Serviciu de imprimantă 3D sau imprimare 3D

OPȚIONAL - Aceste elemente sunt opționale, în funcție de modul în care alegeți să conectați totul

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

- Conectori terminali cu șurub (2 poli | 3 poli | 4 poli)

- Anteturi PCB (https://amzn.to/2X7RjWf)

Pasul 2: Imprimarea 3D a carcasei

Imprimarea 3D a carcasei
Imprimarea 3D a carcasei
Imprimarea 3D a carcasei
Imprimarea 3D a carcasei
Imprimarea 3D a carcasei
Imprimarea 3D a carcasei
Imprimarea 3D a carcasei
Imprimarea 3D a carcasei

Am imprimat-o pe a mea pe Creality CR-10S, folosind Black PLA + (https://amzn.to/2X2SDtE)

Am imprimat la o înălțime de 0,2 straturi, cu umplutură de 25%.

Pasul 3: Puneți totul împreună + Schemă

Punând totul împreună + Schematică
Punând totul împreună + Schematică
Punând totul împreună + Schematică
Punând totul împreună + Schematică
Punând totul împreună + Schematică
Punând totul împreună + Schematică
Punând totul împreună + Schematică
Punând totul împreună + Schematică

Modul în care alegeți să vă conectați Arduino depinde în totalitate de dvs. - Eu personal am ales să mă fac un „scut” ca să spun așa. Pentru a face scutul, am lipit anteturi de sex feminin pe veroboard pentru a se potrivi cu Pro Micro, apoi am adăugat o șină de + 5v și GND, la capetele opuse. Am folosit sârmă jumper pentru a conecta + 5v la „șina” mea de acum 5v și am făcut același lucru pentru GND. Am adăugat apoi rezistențele mele 4x 100k, un capăt conectat la + 5v pentru toate, iar apoi cealaltă parte se conectează la A0, A1, A2 și A3 respectiv. Am adăugat apoi terminale cu șurub la pinii analogici A0, A1, A2 și A3 și, de asemenea, pinii 2 (SDA), 3 (SCL) și 4

Măsurați cablajul și tăiați la lungimi adecvate. Am început mai întâi cu LED-urile Pixel WS2812 - PRIMUL LED WS2812 se conectează la + 5v de la Arduino, GND de la Arduino și DIN se conectează la Pinul 4. După aceasta, restul de 3 sunt înlănțuite, înlănțuind toate 5v> 5v, GND> GND pin și DOUT de la un pixel, se conectează la DIN din următorul. Odată lipite, apăsați-le ușor în orificiile pătrate din partea superioară și lipiți-le pe loc și, de asemenea, pentru a proteja partea din spate de orice conexiuni accidentale sau pantaloni scurți.

După LED-uri, am înșurubat apoi soclurile pentru chitară. Un pin din fiecare se conectează la GND, apoi al doilea pin din fiecare se conectează la A0, A1, A2 și A3 în consecință. Deci, este soclul 1, la A0, soclul 2 la A1, soclul 3 la A2 și soclul 4 la A3.

Apoi am lipit 4 fire la conexiunile OLED și am redus cât mai mult posibil orice lipire în exces. Doriți să vă atașați firele din spatele ecranului, astfel încât să vă lipiți în partea din față a ecranului.

Atenție la pini! Unele OLED-uri au GND în exterior, apoi VCC, unele au VCC în exterior și apoi GND

După ce ați lipit și ați tăiat sau aplatizat conexiunea de lipit cât mai mult posibil, apăsați ușor ecranul în locația sa. Se potrivește puțin prin design, dar rețineți că diferitele toleranțe de imprimare pot afecta acest lucru și, prin urmare, este posibil să trebuiască să faceți câteva postprocesări minore pentru a se potrivi. Odată așezat, așezați un lipici fierbinte peste fiecare dintre cele 4 colțuri pentru a-l ține în poziție.

Conectați totul pentru a se potrivi cu schema și imaginile și, odată ce vă bucurați, puteți apoi să lipiți fierbinte Pro Micro și RTC Clock în loc și apoi să conectați extensia USB la Pro Micro.

Am folosit o extensie micro USB, astfel încât a) USB să poată fi utilizat pentru a furniza energie, dar mai mult, b) astfel încât a fost posibilă reprogramarea Pro Micro, dacă este necesar, fără a distruge totul

Odată fericit, înșurubați carcasa folosind cele 4 șuruburi

Pasul 4: Fișele

Mufele!
Mufele!
Mufele!
Mufele!
Mufele!
Mufele!

Modul în care funcționează este că, din toate punctele de vedere, o parte din design funcționează ca un "ohmmetru". Un ohmmetru este un instrument pentru măsurarea rezistenței electrice. Majoritatea multimetrelor au această funcție prin care alegeți scala și apoi măsurați un rezistor pentru a-i găsi valoarea. Principiul de lucru este că conectați un rezistor CUNOSCUT la + ve, care este apoi conectat la un rezistor necunoscut, care se conectează la -ve. Îmbinarea dintre cele 2 rezistențe se conectează la pinul analogic Arduino, astfel încât să poată citi tensiunea și să calculeze rezistența.

Funcționează ca un divizor de tensiune și calculează rezistența rezistorului necunoscut.

Ca rețea separatoare de tensiune a rezistențelor R1 și R2, Vout = Vin * R2 / (R1 + R2) - Folosim 100k pentru rezistorul nostru cunoscut (R1). Acest lucru ne dă „căderea de tensiune”

Din aceasta, acum putem calcula rezistența rezistorului necunoscut (R2), R2 = Vout * R1 / (Vin - Vout) - unde R1 este rezistorul nostru de 100k (100, 000 ohm)

Utilizând un rezistor diferit în fiecare mufă pe care doriți să o utilizați, puteți apoi regla codul în funcție de mufa utilizată.

Folosesc 4 prize jack. Am ales să folosesc:

Rezistor cunoscut (x4) - 100k

Mufă 1 - 5,6k

Mufă 2 - 10k

Mufă 3 - 22k

Mufă 4 - 39k

Bineînțeles, puteți extinde acest lucru și codificați câte doriți.

Pasul 5: Codul

Codul
Codul

În primul rând, veți avea nevoie de IDE-ul Arduino, disponibil de aici:

De asemenea, va trebui să vă asigurați că aveți și câteva biblioteci Arduino:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (opțional):

O notă despre alegerea plăcii „Arduino” potrivite. Inițial, am început acest proiect cu un Arduino Nano, pentru că sunt foarte ieftini la aproximativ 3 - 4 GBP în Marea Britanie, sau doar 1,50 GBP dacă achiziționați de la AliExpress (dar nu vă deranjați să așteptați 30-50 de zile)). Problema cu Nano este că SRAM este de 2 KB (2048 octeți). Această schiță utilizează 1728 octeți de memorie dinamică cu variabile globale. Acesta este 84% din SRAM, lăsând doar 320 de octeți liberi pentru variabilele locale. Acest lucru a fost insuficient și ar face ca Nano să se blocheze și să înghețe.

Pro Micro (Leonardo) are 2.5K SRAM (2560 octeți), ceea ce înseamnă că există 694 octeți liberi pentru variabilele locale (schița folosește 72% din SRAM-ul Pro Micro). Până în prezent, acest lucru sa dovedit perfect adecvat și stabil pentru utilizarea mea. Dacă intenționați să utilizați multe prize jack, atunci vă recomandăm să utilizați ceva cu mai mult SRAM.

În ceea ce privește stocarea Flash, această schiță utilizează 88% (25252 octeți) din 30k (ATMega328p [Nano] și ATMega32u4 [Pro Micro] au 32k, dar 2k este rezervat pentru bootloader)

Am scris sute de schițe Arduino de-a lungul anilor, dar sunt un hobbyist - așa că rețineți că unele părți ale codului pot fi ineficiente sau pot exista scenarii „modalități mai bune de a face acest lucru”. Acestea fiind spuse, funcționează perfect pentru mine și sunt mulțumit de asta. Am folosit biblioteci care TREBUIE să lucreze pe majoritatea plăcilor, indiferent dacă este vorba de AVR (cele mai de bază Arduino) sau SAMD21 (am o mână de dispozitive Cortex M0)

Am vrut să afișez o altă grafică și pe baza mufei utilizate. Dacă doriți să vă creați propriul, acesta este un ghid simplu și strălucitor despre cum să creați matricea C pentru imaginile care vor fi utilizate cu acest afișaj:

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

Asigurați-vă că utilizați PROGMEM pentru grafica dvs. De exemplu:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Prin proiectare, ecranul se va "expira" după 5 secunde și va reveni la afișarea timpului.

Majoritatea setărilor pot fi găsite în Settings.h, în mod specific, numele fișelor jack asociate sunt codate aici:

#define PLUG1 "CHEIE"

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

Există, de asemenea, câteva părți importante ale codului în interiorul Variables.h

plutitor R1 = 96700,0;

plutitor R2 = 96300,0; plutitor R3 = 96500,0; plutitor R4 = 96300,0;

Acestea sunt valorile de rezistență CUNOSCUTE, în ohmi, ale fiecăruia dintre cele 4 rezistențe.

R1 conectat la A0, R2 la A1, R3 la A2 și R4 la A3.

Este recomandabil să vă măsurați rezistențele de 100k folosind un multimetru și să utilizați valoarea exactă a rezistorului. Luați măsurarea rezistorului odată ce totul este conectat. (Dar nu este pornit).

Atunci când alegeți rezistențe pentru mufele dvs. jack, asigurați-vă că există un spațiu bun de ohmi între ele și, atunci când le codificați, acordați-vă un interval frumos mai mic și mai mare decât rezistorul ales. Iată ce am folosit în codul meu:

plutitor P1_MIN = 4000.0, P1_MAX = 7000.0; // 5,6K

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

Motivul pentru aceasta este de a explica citirea analogică și fluctuațiile minore de tensiune etc.

Deci, ceea ce se întâmplă este că, dacă rezistența detectată este între 4000 ohmi și 7000 ohmi, presupunem că ați folosit un rezistor de 5,6 k și astfel codul va vedea acest lucru ca Jack Plug 1. Dacă rezistența măsurată este între 8000 ohmi și 12000 ohmi, presupunerea este că este un rezistor de 10k și este Jack Plug 2 și așa mai departe.

Dacă trebuie să faceți o depanare (Nu lăsați necomentatată în „producție”, deoarece depanarea în serie folosește un ram prețios) pur și simplu descomentați liniile de care aveți nevoie în partea de sus a Settings.h

// # define SERIAL_DEBUG

// # define WAIT_FOR_SERIAL

Pentru a descomenta, eliminați simplu //…. pentru a comenta linia înapoi, adăugați din nou // în partea din față a liniei.

SERIAL_DEBUG permite depanarea în serie și utilizarea unor lucruri precum (de exemplu)

Serial.println (F („hello world”));

WAIT_FOR_SERIAL este un pas suplimentar, ceea ce înseamnă că, până când nu deschideți serialul, codul nu va continua. Acest lucru vă asigură că nu pierdeți niciun mesaj serial important. - NU LĂSAȚI NICIODATĂ ACEST ACTIVAT

Dacă lăsați WAIT_FOR_SERIAL activat, nu veți putea utiliza suportul cheii dvs. în niciun mediu „din lumea reală”, deoarece va fi blocat în așteptarea monitorului serial Arduino IDE înainte ca acesta să poată continua în bucla principală a schiței. După ce ați finalizat depanarea, asigurați-vă că ați comentat din nou această linie și reîncărcați schița pentru producție / finalizare.

Când folosesc opțiunea SERIAL_DEBUG, codul meu conține următoarele:

#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]); for (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 (soclu + 1); Serial.print (F ("are o rezistență de:")); Serial.println (rezistență); } #endif

Ultima linie Serial.print vă va spune care este rezistența, în ohmi, a ultimei mufe introduse. Deci, puteți utiliza această schiță și ca un ohmmetru pentru a verifica rezistența unui conector jack.

Pasul 6: Note

Cred că am acoperit totul, dar vă rog să comentați și voi face tot posibilul să citesc și să răspund când pot:)

Scuze pentru videoclipul oarecum slab - nu am un trepied, o configurație de recodare sau un spațiu de lucru adecvat, ca să zic așa, așa că a fost filmat (prost) ținând telefonul într-o mână și încercând să-l demonstrez cu cealaltă.

Mulțumesc pentru lectură.

Recomandat: