Taula de continguts:

Porta claus per a guitarra Arduino amb reconeixement de jack i OLED: 7 passos
Porta claus per a guitarra Arduino amb reconeixement de jack i OLED: 7 passos

Vídeo: Porta claus per a guitarra Arduino amb reconeixement de jack i OLED: 7 passos

Vídeo: Porta claus per a guitarra Arduino amb reconeixement de jack i OLED: 7 passos
Vídeo: La Locura Esta en Mi - Santaflow (con porta y eneyser) [remix] 2024, Juliol
Anonim
Image
Image
Porta claus per a guitarra Arduino amb reconeixement de jack i OLED
Porta claus per a guitarra Arduino amb reconeixement de jack i OLED

Introducció:

Aquesta instrucció detallarà la construcció del meu suport per a la clau del connector Guitar Jack basat en Arduino

Aquesta és la meva primera instrucció de la història, així que, si us plau, seguiu amb mi, ja que puc fer canvis / actualitzacions al llarg del camí

Pas 1: peces i eines

Peces i eines
Peces i eines
Peces i eines
Peces i eines
Peces i eines
Peces i eines

La majoria de les peces que he comprat a Amazon.co.uk o eBay, algunes ja les he tingut: aquí teniu una llista del que necessitareu.

Els enllaços d’Amazon són enllaços d’afiliats, és possible que pugueu trobar-los més barats en altres llocs: faig servir Amazon Prime molt, de manera que Amazon va ser el meu preferent.

Volia mantenir aquesta construcció bastant econòmica i econòmica. Podeu utilitzar una pantalla TFT més gran, si ho desitgeu, així com un Arduino diferent. No utilitzeu un NANO, ja que es bloquejarà a causa de l’ús elevat de memòria. El codi utilitza aproximadament el 72% de la memòria RAM del Pro Micro i és estable, però a partir de les proves, un NANO es bloquejarà i es congelarà.

(Més detalls al pas del codi.)

PARTS

1x Arduino Pro Micro -

1x 0,96 OLED amb pantalla groga i blava -

4x Píxels WS2812 -

1x DS3231 RTC -

Mono Jack 4x 1/4 (o tants com vulgueu): Amazon (Gold) o Amazon (Silver) o eBay.co.uk

1 paquet de resistències mixtes:

Jacks de guitarra 4x 1/4 :

1x Cable d'extensió de cable micro USB:

Cargols 4x M3

EINES I MATERIALS

- Soldador (Aquest és el que he comprat, un TS100, ja que venia amb consells addicionals

- Soldar

- Pistola de cola calenta (https://amzn.to/2UTd9PN)

- Cable (https://amzn.to/2VK2ILU)

- Talladors de filferro / strippers (https://amzn.to/2KzqUzp)

- Servei d'impressora 3D o impressió 3D

OPCIONAL: aquests elements són opcionals, segons com vulgueu connectar-ho tot

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

Connectors de terminal de cargol (2 pols | 3 pols | 4 pols)

- Capçaleres PCB (https://amzn.to/2X7RjWf)

Pas 2: Impressió 3D de la funda

Impressió 3D de la funda
Impressió 3D de la funda
Impressió 3D de la funda
Impressió 3D de la funda
Impressió 3D de la funda
Impressió 3D de la funda
Impressió 3D de la funda
Impressió 3D de la funda

Vaig imprimir la meva al meu Creality CR-10S, amb Black PLA + (https://amzn.to/2X2SDtE)

Vaig imprimir a 0,2 alçades de capa, amb un 25% d’ompliment.

Pas 3: unir-ho tot + esquema

Posant-ho tot junt + esquema
Posant-ho tot junt + esquema
Posant-ho tot junt + esquema
Posant-ho tot junt + esquema
Posant-ho tot junt + esquema
Posant-ho tot junt + esquema
Posant-ho tot junt + esquema
Posant-ho tot junt + esquema

La vostra decisió de connectar el vostre Arduino depèn completament de vosaltres: personalment vaig decidir fer-me un "escut" per dir-ho d'alguna manera. Per fer l’escut, he soldat capçaleres femenines a veroboard perquè coincideixin amb el Pro Micro, i després he afegit un rail de + 5v i GND, als extrems oposats. He utilitzat cable de pont per connectar el + 5v al meu "rail" ara de 5v, i he fet el mateix per al GND. Després vaig afegir les meves resistències de 4x 100k, un extrem connectat a + 5v per a totes elles i, a continuació, l'altre costat es connecta a A0, A1, A2 i A3 respectivament. Després he afegit terminals de cargol als pins analògics A0, A1, A2 i A3 i també als pins 2 (SDA), 3 (SCL) i 4

Mesureu el cablejat i talleu-lo a la longitud adequada. Primer vaig començar amb els LED Pixel WS2812: el PRIMER LED WS2812 es connecta a + 5v des de l’Arduino, el GND des de l’Arduino i el DIN es connecta al Pin 4. Després d’això, els 3 restants s’encadenen, encadenant tots els 5v> 5v, GND> GND pins i DOUT d'un píxel, es connecta a DIN del següent. Un cop soldades, premeu-les suaument als forats quadrats de la part superior i col·loqueu-la calenta al seu lloc i també per protegir la part posterior de qualsevol connexió o curtmetratge accidental.

Després dels LED, vaig cargolar els endolls de la guitarra. Un pin de cadascun es connecta a GND i, a continuació, el segon pin de cadascun es connecta a A0, A1, A2 i A3 en conseqüència. Així doncs, és el sòcol 1, a A0, el sòcol 2 a A1, el sòcol 3 a A2 i el sòcol 4 a A3.

A continuació, heu soldat 4 cables a les connexions OLED i he reduït el màxim possible qualsevol excés de soldadura. Voleu connectar els cables des de la part posterior de la pantalla, de manera que esteu soldant a la part frontal de la pantalla.

Preste atenció als pins! Alguns OLED tenen GND a l'exterior, després VCC, d'altres tenen VCC a l'exterior i després GND

Un cop soldat i reduït o aplanat la connexió de soldadura tant com sigui possible, premeu suaument la pantalla a la seva ubicació. És un ajust molt ajustat pel disseny, però tingueu en compte que les diferents toleràncies d’impressió poden afectar-ho i, per tant, és possible que hagueu de fer un petit processament posterior perquè s’ajusti. Un cop al lloc, col·loqueu una mica de cola calenta sobre cadascuna de les 4 cantonades per mantenir-la al seu lloc.

Connecteu-ho tot perquè coincideixi amb l’esquema i les imatges i, un cop feliç, també podeu enganxar el rellotge Pro Micro i RTC al seu lloc i, a continuació, connectar l’extensió USB al Pro Micro.

He utilitzat una extensió micro USB perquè a) es pugui utilitzar l'USB per subministrar energia, però més encara, b) perquè sigui possible reprogramar el Pro Micro si cal, sense apartar-ho tot

Un cop feliç, cargoleu la caixa amb els 4 cargols

Pas 4: els endolls

Els endolls!
Els endolls!
Els endolls!
Els endolls!
Els endolls!
Els endolls!

La manera en què funciona, és que, a tots els efectes, part del disseny funciona com un "ohmímetre". Un ohmímetre és un instrument per mesurar la resistència elèctrica. La majoria de multímetres tenen aquesta funció mitjançant la qual es tria l’escala i es mesura una resistència per trobar-ne el valor. El principal funcionament és que connecteu una resistència CONEIXIDA al + ve, que després es connecta a una resistència DESCONEGUT, que es connecta a -ve. La unió entre les dues resistències es connecta al pin analògic Arduino perquè pugui llegir la tensió i calcular la resistència.

Funciona com un divisor de tensió i calcula la resistència de la resistència desconeguda.

Com a xarxa divisòria de tensió de resistències R1 i R2, Vout = Vin * R2 / (R1 + R2): fem servir 100k per a la nostra coneguda resistència (R1). Això ens dóna la "caiguda de tensió"

A partir d’això, ara podem esbrinar la resistència de la resistència desconeguda (R2), R2 = Vout * R1 / (Vin - Vout) - on R1 és la nostra resistència de 100k (100, 000 ohm)

En utilitzar una resistència diferent a cada presa de connexió que vulgueu utilitzar, podeu ajustar el codi en funció de la presa que utilitzeu.

Estic fent servir 4 endolls. Vaig optar per utilitzar:

Resistència coneguda (x4) - 100k

Connector Jack 1 - 5,6k

Connector Jack 2 - 10k

Connector Jack 3 - 22k

Connector Jack 4 - 39k

Per descomptat, podeu ampliar-ho i codificar-ne tantes com vulgueu.

Pas 5: el codi

El codi
El codi

En primer lloc, necessitareu l’IDE Arduino, disponible des d’aquí:

També haureu d’assegurar-vos que teniu algunes biblioteques Arduino:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (opcional):

Una nota sobre com triar el tauler "Arduino" adequat. Originalment, vaig començar aquest projecte amb un Arduino Nano, perquè són molt barats entre 3 i 4 lliures al Regne Unit o tan sols 1,50 lliures si compres a AliExpress (però no importa l’espera de 30 a 50 dies)). El problema del Nano és que SRAM és de 2 KB (2048 bytes). Aquest esbós utilitza 1728 bytes de memòria dinàmica amb variables globals. És el 84% del SRAM, deixant només 320 bytes lliures per a les variables locals. Això era insuficient i provocaria que el Nano es bloquejés i es congelés.

El Pro Micro (Leonardo) té 2.5K SRAM (2560 bytes), el que significa que hi ha 694 bytes lliures per a les variables locals (l’esbós utilitza el 72% de l’SRAM de Pro Micro). Fins ara, això s'ha demostrat perfectament adequat i estable per al meu ús. Si teniu intenció d'utilitzar molts endolls, és possible que vulgueu plantejar-vos utilitzar alguna cosa amb més SRAM.

Pel que fa a l’emmagatzematge Flash, aquest esbós utilitza el 88% (25252 bytes) de 30k (ATMega328p [Nano] i ATMega32u4 [Pro Micro] tenen 32k, però 2k està reservat per al carregador d’arrencada)

Al llarg dels anys he escrit centenars d’esbossos d’Arduino, però sóc un aficionat; per tant, tingueu en compte que algunes parts del codi poden ser ineficients o que hi hagi escenaris de “millors maneres de fer això”. Dit això, funciona perfectament per a mi i estic content. He utilitzat biblioteques que DEVEN funcionar a la majoria de taules, ja siguin AVR (Arduino més bàsiques) o SAMD21 (tinc un grapat de dispositius Cortex M0)

També volia mostrar un gràfic diferent basat en el jack utilitzat. Si voleu fer-ho vostre, aquesta és una guia senzilla i brillant sobre com crear la matriu C per a les imatges que s’utilitzaran amb aquesta pantalla:

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

Assegureu-vos d’utilitzar PROGMEM per als vostres gràfics. Per exemple:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Per disseny, la pantalla "esgotarà" al cap de 5 segons i tornarà a mostrar l'hora.

La majoria de la configuració es pot trobar a Settings.h, concretament, el nom dels connectors de connexió associats es codifica aquí:

#define PLUG1 "CLAUS"

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

També hi ha algunes parts importants del codi dins de Variables.h

flotador R1 = 96700,0;

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

Aquests són els valors de resistència CONEIXUTS, en ohms, de cadascun dels 4 resistors.

R1 connectat a A0, R2 a A1, R3 a A2 i R4 a A3.

Es recomana mesurar les resistències de 100 k mitjançant un multímetre i utilitzar el valor exacte de la resistència. Preneu la mesura de la resistència un cop tot estigui connectat. (Però no encès).

A l’hora de triar resistències per als endolls, assegureu-vos que hi hagi un bon buit d’ohm entre ells i, quan els codifiqueu, doneu-vos un bon rang inferior i superior al de la resistència escollida. Això és el que he utilitzat al meu codi:

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

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

El motiu d'això és tenir en compte la lectura analògica i les petites fluctuacions de voltatge, etc.

Llavors, el que passa és que, si la resistència detectada oscil·la entre els 4000 i els 7.000 ohms, suposem que heu utilitzat una resistència de 5,6 k i, per tant, el codi ho veurà com Jack Plug 1. Si la resistència mesurada és entre 8000 ohms i 12.000 ohms, la suposició és que és una resistència de 10 k i que és Jack Plug 2, etc.

Si heu de fer una depuració (no deixeu cap comentari a la "producció", ja que la depuració en sèrie fa servir un preciós RAM), simplement descomenteu les línies que necessiteu a la part superior de Settings.h

// # defineix SERIAL_DEBUG

// # defineix WAIT_FOR_SERIAL

Per fer un comentari, elimineu simplement //…. per comentar la línia cap enrere, torneu a afegir // a la part frontal de la línia.

SERIAL_DEBUG permet la depuració en sèrie i l'ús de coses com ara (per exemple)

Serial.println (F ("hola món"));

WAIT_FOR_SERIAL és un pas addicional, és a dir, fins que no obriu el monitor de sèrie, el codi no continuarà. Això us ajudarà a no perdre cap missatge en sèrie important. - NO DEIXES MAI AIX EN HABILITAT

Si deixeu activat WAIT_FOR_SERIAL, no podreu utilitzar el portaplaves de la vostra clau en cap entorn del "món real", ja que quedarà bloquejat a l'espera del monitor sèrie Arduino IDE abans que pugui continuar al bucle principal de l'esbós. Un cop hàgiu completat la depuració, assegureu-vos de tornar a comentar aquesta línia i torneu a penjar l'esbós per a la producció / finalització.

En utilitzar l’opció SERIAL_DEBUG, el meu codi conté el següent:

#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]); per a (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 (INSERTAT [socket]) {Serial.print (F ("Endoll socket")); Serial.print (sòcol + 1); Serial.print (F ("té una resitència de:")); Serial.println (resistència); } #endif

L'última línia Serial.print us indicarà quina és la resistència, en ohms, de l'últim jack inserit. Per tant, també podeu utilitzar aquest esbós com a ohmímetre per comprovar la resistència d’un endoll.

Pas 6: Notes

Crec que ho he cobert tot, però si us plau fes comentaris i faré tot el possible per llegir i respondre quan pugui:)

Disculpeu el vídeo una mica pobre: no tinc trípode, configuració de gravació ni un espai de treball adequat per dir-ho així, es va filmar (malament) amb el telèfon en una mà i intentant demostrar-lo amb l'altra.

Gràcies per llegir.

Recomanat: