Tabla de contenido:

Soporte para llave Arduino Guitar Jack con reconocimiento de jack y OLED: 7 pasos
Soporte para llave Arduino Guitar Jack con reconocimiento de jack y OLED: 7 pasos

Video: Soporte para llave Arduino Guitar Jack con reconocimiento de jack y OLED: 7 pasos

Video: Soporte para llave Arduino Guitar Jack con reconocimiento de jack y OLED: 7 pasos
Video: CUAL ES EL HOMBRE QUE INTRODUCE SU INSTRUMENTO? 🤨🤨 #staryuuki #staryuukiii 2024, Mes de julio
Anonim
Image
Image
Soporte para llave Arduino Guitar Jack con reconocimiento de jack y OLED
Soporte para llave Arduino Guitar Jack con reconocimiento de jack y OLED

Intro:

Este instructivo detallará la construcción de mi soporte de clave de complemento Guitar Jack basado en Arduino

Este es mi primer instructivo, así que tengan paciencia conmigo ya que puedo hacer cambios / actualizaciones en el camino

Paso 1: Piezas y herramientas

Piezas y herramientas
Piezas y herramientas
Piezas y herramientas
Piezas y herramientas
Piezas y herramientas
Piezas y herramientas

La mayoría de las piezas las compré en Amazon.co.uk o eBay, algunas ya las tenía probadas. Aquí hay una lista de lo que necesitará.

Los enlaces de Amazon son todos enlaces de afiliados, es posible que pueda encontrarlos más baratos en otros lugares; uso mucho Amazon Prime, por lo que Amazon resultó ser mi opción preferida.

Quería mantener esta construcción a un costo bastante bajo y económico. Podrías usar una pantalla TFT más grande si así lo deseas, así como un Arduino diferente. No use un NANO, ya que se bloqueará debido al alto uso de memoria. El código usa aproximadamente el 72% de la RAM del Pro Micro y es estable, pero a partir de las pruebas, un NANO se bloqueará y se congelará.

(Más detalles en el paso Código).

PARTES

1x Arduino Pro Micro -

1x OLED de 0.96 con pantalla amarilla y azul -

4x WS2812 'Píxeles' -

1x DS3231 RTC -

4 x 1/4 Mono Jack (o tantos como desee) - Amazon (Gold) o Amazon (Silver) o eBay.co.uk

1x paquete de resistencias mixtas -

4 conectores de guitarra de 1/4 -

1x Cable de extensión de cable micro USB -

4x tornillos M3

HERRAMIENTAS Y MATERIALES

- Soldador (Este es el que compré, un TS100, ya que venía con consejos adicionales

- soldadura

- Pistola de pegamento caliente (https://amzn.to/2UTd9PN)

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

- Cortadores / pelacables (https://amzn.to/2KzqUzp)

- Impresora 3D o servicio de impresión 3D

OPCIONAL: estos elementos son opcionales, dependiendo de cómo elija conectar todo

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

- Conectores de terminal de tornillo (2 polos | 3 polos | 4 polos)

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

Paso 2: Impresión 3D de la carcasa

Impresión 3D de la carcasa
Impresión 3D de la carcasa
Impresión 3D de la carcasa
Impresión 3D de la carcasa
Impresión 3D de la carcasa
Impresión 3D de la carcasa
Impresión 3D de la carcasa
Impresión 3D de la carcasa

Imprimí el mío en mi Creality CR-10S, usando Black PLA + (https://amzn.to/2X2SDtE)

Imprimí a 0,2 capas de altura, con un 25% de relleno.

Paso 3: Poner todo junto + Esquema

Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema
Poniéndolo todo junto + Esquema

La forma en que elijas conectar tu Arduino depende totalmente de ti; yo personalmente elegí convertirme en un "escudo", por así decirlo. Para hacer el escudo, he soldado los encabezados hembra al veroboard para que coincida con el Pro Micro, luego agregué un riel de + 5v y GND, en los extremos opuestos. He usado un cable de puente para conectar el + 5v a mi 'riel' ahora de 5v, e hice lo mismo con el GND. Luego agregué mis resistencias 4x 100k, un extremo conectado a + 5v para todos ellos, y luego el otro lado se conecta a A0, A1, A2 y A3 respectivamente. Luego agregué terminales de tornillo a los pines analógicos A0, A1, A2 y A3 y también a los pines 2 (SDA), 3 (SCL) y 4

Mida su cableado y córtelo a las longitudes adecuadas. Primero comencé con los LED de píxeles WS2812: el PRIMER LED WS2812 se conecta a + 5v desde el Arduino, GND desde el Arduino y DIN se conecta al Pin 4. Después de esto, los 3 restantes se encadenan, encadenando todos los 5v> 5v, GND> Pines GND y DOUT de un Pixel, se conecta a DIN del siguiente. Una vez soldado, presione estos suavemente en los orificios cuadrados en la parte superior, y péguelos con pegamento caliente en su lugar y también para proteger la parte posterior de cualquier conexión accidental o cortocircuito.

Después de los LED, atornillé los enchufes de la clavija de guitarra. Un pin de cada uno se conecta a GND, y luego el segundo pin de cada uno se conecta a A0, A1, A2 y A3 en consecuencia. Así que ese es el conector 1, a A0, el conector 2 a A1, el conector 3 a A2 y el conector 4 a A3.

A continuación, soldé 4 cables a las conexiones OLED y recorté cualquier exceso de soldadura tanto como fuera posible. Desea conectar sus cables desde la parte posterior de la pantalla, por lo que está soldando a la parte frontal de la pantalla.

¡Presta atención a los pines! Algunos OLED tienen GND en el exterior, luego VCC, algunos tienen VCC en el exterior y luego GND

Una vez soldado y haya recortado o aplanado la conexión de soldadura tanto como sea posible, presione suavemente la pantalla en su ubicación. Es un poco ajustado por diseño, pero tenga en cuenta que las diferentes tolerancias de impresión pueden afectar esto y, por lo tanto, es posible que deba realizar un procesamiento posterior menor para que encaje. Una vez en su lugar, coloque un poco de pegamento caliente en cada una de las 4 esquinas para mantenerlo en su lugar.

Conecte todo para que coincida con el esquema y las imágenes, y una vez que esté feliz, puede pegar en caliente el Pro Micro y el reloj RTC en su lugar también, y luego conectar la extensión USB al Pro Micro.

Usé una extensión micro USB para que a) el USB se pueda usar para proporcionar energía, pero más aún, b) para que sea posible reprogramar el Pro Micro si es necesario sin desarmarlo todo

Una vez feliz, atornille la carcasa con los 4 tornillos

Paso 4: ¡Los enchufes

¡Los enchufes!
¡Los enchufes!
¡Los enchufes!
¡Los enchufes!
¡Los enchufes!
¡Los enchufes!

La forma en que esto funciona es que, para todos los efectos, parte del diseño funciona como un "ohmímetro". Un ohmímetro es un instrumento para medir la resistencia eléctrica. La mayoría de los multímetros tienen esta función mediante la cual usted elige la escala y luego mide una resistencia para encontrar su valor. El principio de funcionamiento es que conecta una resistencia CONOCIDA al + ve, que luego se conecta a una resistencia DESCONOCIDA, que se conecta a -ve. La unión entre las 2 resistencias se conecta al pin analógico Arduino para que pueda leer el voltaje y calcular la resistencia.

Funciona como un divisor de voltaje y calcula la resistencia de la resistencia desconocida.

Como una red divisoria de voltaje de resistencias R1 y R2, Vout = Vin * R2 / (R1 + R2): estamos usando 100k para nuestra resistencia conocida (R1). Esto nos da la "caída de voltaje"

A partir de esto, ahora podemos calcular la resistencia de la resistencia desconocida (R2), R2 = Vout * R1 / (Vin - Vout) - donde R1 es nuestra resistencia de 100k (100, 000 ohmios)

Al usar una resistencia diferente en cada conector que desee utilizar, puede ajustar el código en consecuencia dependiendo del conector en uso.

Estoy usando 4 enchufes jack. Opté por usar:

Resistencia conocida (x4) - 100k

Enchufe Jack 1 - 5.6k

Enchufe Jack 2 - 10k

Enchufe Jack 3 - 22k

Enchufe Jack 4 - 39k

Por supuesto, puede expandir esto y codificar tantos como desee.

Paso 5: el código

El código
El código

En primer lugar, necesitará el IDE de Arduino, disponible desde aquí:

También deberá asegurarse de tener algunas bibliotecas Arduino también:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (opcional):

Una nota sobre la elección de la placa "Arduino" correcta. Originalmente comencé este proyecto con un Arduino Nano, porque son súper baratos en alrededor de £ 3- £ 4 en el Reino Unido, o tan solo £ 1.50 si compras en AliExpress (pero no te preocupes por la espera de 30-50 días). El problema con el Nano es que su SRAM es de 2 KB (2048 bytes). Este boceto utiliza 1728 bytes de memoria dinámica con variables globales. Eso es el 84% de la SRAM, dejando solo 320 bytes libres para variables locales. Esto era insuficiente y haría que el Nano se bloqueara y se congelara.

El Pro Micro (Leonardo) tiene 2.5K SRAM (2560 bytes), lo que significa que hay 694 bytes libres para variables locales (el boceto usa el 72% de la SRAM del Pro Micro). Hasta ahora, esto ha demostrado ser perfectamente adecuado y estable para mi uso. Si tiene la intención de usar muchos enchufes, puede considerar usar algo con más SRAM.

En lo que respecta al almacenamiento Flash, este boceto utiliza el 88% (25252 bytes) de 30k (ATMega328p [Nano] y ATMega32u4 [Pro Micro] tienen 32k, pero 2k están reservados para el gestor de arranque)

He escrito cientos de bocetos de Arduino a lo largo de los años, pero soy un aficionado, así que tenga en cuenta que algunas partes del código pueden ser ineficientes o puede haber escenarios de "mejores formas de hacer esto". Dicho esto, me está funcionando perfectamente y estoy contento con él. Usé bibliotecas que DEBERÍAN funcionar en la mayoría de las placas, ya sea AVR (la mayoría de las Arduino básicas) o SAMD21 (tengo un puñado de dispositivos Cortex M0)

También quería mostrar un gráfico diferente basado en el conector utilizado. Si desea crear el suyo propio, esta es una guía simple y brillante sobre cómo crear el C Array para imágenes que se usarán con esta pantalla:

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

Asegúrese de utilizar PROGMEM para sus gráficos. P.ej:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Por diseño, la pantalla se "agotará" después de 5 segundos y volverá a mostrar la hora.

La mayoría de las configuraciones se pueden encontrar en Settings.h, específicamente, el nombre de las clavijas asociadas se codifica aquí:

#define PLUG1 "LLAVES"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENÉRICO "NA"

También hay algunas partes importantes de código dentro de Variables.h

flotador R1 = 96700.0;

flotar R2 = 96300.0; flotador R3 = 96500.0; flotador R4 = 96300.0;

Estos son los valores de resistencia CONOCIDOS, en ohmios, de cada una de las 4 resistencias.

R1 conectado a A0, R2 a A1, R3 a A2 y R4 a A3.

Es recomendable medir sus resistencias de 100k con un multímetro y usar el valor exacto de la resistencia. Tome la medida de la resistencia una vez que todo esté conectado. (Pero no encendido).

Al elegir resistencias para sus enchufes, asegúrese de que haya un buen espacio de ohmios entre ellos y, al codificarlos, obtenga un buen rango más bajo y más alto que el resistor elegido. Esto es lo que usé en mi código:

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

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

La razón de esto es tener en cuenta la lectura analógica y las fluctuaciones menores de voltaje, etc.

Entonces, lo que sucede es que, si la resistencia detectada está entre 4000 ohmios y 7000 ohmios, suponemos que has usado una resistencia de 5.6k y, por lo tanto, el código verá esto como Jack Plug 1. Si la resistencia medida está entre 8000 ohmios y 12000 ohmios, la suposición es que es una resistencia de 10k y es Jack Plug 2 y así sucesivamente.

Si necesita hacer alguna depuración (no deje sin comentar en 'producción' ya que la depuración en serie consume un RAM precioso) simplemente descomente las líneas que necesita en la parte superior de Configuración.

// # define SERIAL_DEBUG

// # define WAIT_FOR_SERIAL

Para descomentar, simplemente elimine el //…. para volver a comentar la línea, vuelva a agregar // al principio de la línea.

SERIAL_DEBUG habilita la depuración serial y el uso de cosas como (por ejemplo)

Serial.println (F ("hola mundo"));

WAIT_FOR_SERIAL es un paso adicional, eso significa que, hasta que abra el Serial Monitor, el código no continuará. Esto ayuda a garantizar que no se pierda ningún mensaje en serie importante. - NUNCA DEJE ESTE HABILITADO

Si deja WAIT_FOR_SERIAL habilitado, no podrá usar el soporte de su clave en ningún entorno del "mundo real", ya que estará atascado esperando el monitor Arduino IDE Serial antes de que pueda continuar en el bucle principal del boceto. Una vez que haya completado su depuración, asegúrese de descomentar esta línea nuevamente y vuelva a cargar su boceto para la producción / finalización.

Cuando utilizo la opción SERIAL_DEBUG, mi código contiene lo siguiente:

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = tamaño de (SOCKET_1234_HAS_PLUGTYPE_X) / tamaño de (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 ("Enchufe")); Serial.print (socket + 1); Serial.print (F ("tiene una resistencia de:")); Serial.println (resistencia); } #terminara si

La última línea de Serial.print le dirá cuál es la resistencia, en ohmios, del último conector insertado. Por lo tanto, también puede usar este boceto como una especie de ohmímetro para verificar la resistencia de una clavija.

Paso 6: notas

Creo que he cubierto todo, pero por favor comente y haré todo lo posible para leer y responder cuando pueda:)

Disculpas por el video algo pobre: no tengo un trípode, una configuración de grabación o un espacio de trabajo adecuado, por así decirlo, así que esto se filmó (mal) sosteniendo el teléfono en una mano y tratando de hacer una demostración con la otra.

Gracias por leer.

Recomendado: