Innholdsfortegnelse:

Arduino gitar jack nøkkelholder med jack anerkjennelse og OLED: 7 trinn
Arduino gitar jack nøkkelholder med jack anerkjennelse og OLED: 7 trinn

Video: Arduino gitar jack nøkkelholder med jack anerkjennelse og OLED: 7 trinn

Video: Arduino gitar jack nøkkelholder med jack anerkjennelse og OLED: 7 trinn
Video: Arduino Guitar Jack Key Holder with Jack Recognition & OLED 2024, November
Anonim
Image
Image
Arduino gitar jack nøkkelholder med jack anerkjennelse og OLED
Arduino gitar jack nøkkelholder med jack anerkjennelse og OLED

Intro:

Denne instruksen vil beskrive byggingen av min Arduino -baserte Guitar Jack -plugin -nøkkelholder

Dette er min første gang som kan instrueres, så vær så snill og vær så snill å vær så snill, siden jeg kan gjøre endringer / oppdateringer underveis

Trinn 1: Deler og verktøy

Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy
Deler og verktøy

De fleste delene jeg kjøpte fra Amazon.co.uk eller eBay, noen hadde jeg sparket rundt allerede - Her er en liste over hva du trenger.

Amazon -lenker er alle tilknyttede lenker, du kan kanskje finne billigere andre steder - jeg bruker mye Amazon Prime, så Amazon var tilfeldigvis min favoritt.

Jeg ønsket å beholde denne bygningen ganske rimelig og rimelig. Du kan bruke en større TFT -skjerm hvis du ønsker det, så vel som en annen Arduino. Ikke bruk en NANO, da den krasjer på grunn av høy minnebruk. Koden bruker omtrent 72% av Pro Micros RAM og er stabil, men fra testing vil en NANO krasje og fryse.

(Flere detaljer i kode -trinnet.)

DELER

1x Arduino Pro Micro -

1x 0,96 OLED med gul og blå skjerm -

4x WS2812 'piksler' -

1x DS3231 RTC -

4x 1/4 Mono Jack (Eller så mange du vil) - Amazon (gull) eller Amazon (sølv) eller eBay.co.uk

1x blandet motstandspakke -

4x 1/4 gitarkontakter -

1x forlengelseskabel for mikro -USB -kabel -

4x M3 skruer

VERKTØY OG MATERIALER

- Loddejern (Dette er det jeg kjøpte - en TS100 - da det kom med flere tips

- Loddetinn

- Hotlimpistol (https://amzn.to/2UTd9PN)

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

- Wire cutters/strippers (https://amzn.to/2KzqUzp)

- 3D -skriver eller 3D -utskriftstjeneste

VALGFRITT - Disse elementene er valgfrie, avhengig av hvordan du velger å koble alt sammen

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

- Skruterminalkontakter (2 polet | 3 polet | 4 polet)

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

Trinn 2: 3D -utskrift av saken

3D -utskrift av saken
3D -utskrift av saken
3D -utskrift av saken
3D -utskrift av saken
3D -utskrift av saken
3D -utskrift av saken
3D -utskrift av saken
3D -utskrift av saken

Jeg skrev ut min på Creality CR-10S, med Black PLA+ (https://amzn.to/2X2SDtE)

Jeg trykket på 0,2 laghøyde, med 25% utfylling.

Trinn 3: Sett alt sammen + skjematisk

Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk
Å sette alt sammen + skjematisk

Hvordan du velger å koble Arduino er helt opp til deg - jeg personlig valgte å gjøre meg selv til et "skjold" for å si det sånn. For å lage skjoldet har jeg loddet kvinnelige overskrifter til veroboard for å matche Pro Micro, jeg la deretter til en skinne på +5v og GND, i motsatte ender. Jeg har brukt jumper wire for å koble +5v til min nå 5v 'rail', og gjorde det samme for GND. Jeg la deretter til mine 4x 100k motstander, den ene enden koblet til +5v for dem alle, og deretter koblet den andre siden til henholdsvis A0, A1, A2 og A3. Jeg har deretter lagt til skrueterminaler til analoge pinner A0, A1, A2 og A3 og også pinner 2 (SDA), 3 (SCL) og 4

Mål ledningene og kutt til passende lengder. Jeg begynte med WS2812 Pixel -lysdiodene først - FØRSTE WS2812 LED kobles til +5v fra Arduino, GND fra Arduino, og DIN kobles til Pin 4. Etter dette blir de resterende 3 lenket sammen, og kjedet alle 5v> 5v, GND> GND -pinner og DOUT fra en Pixel, kobles til DIN i den neste. Når de er loddet, trykker du disse forsiktig inn i de firkantede hullene på toppen, og varmt lim på plass og også for å beskytte baksiden mot utilsiktede tilkoblinger eller shorts.

Etter lysdiodene skrudde jeg deretter inn Guitar Jack Sockets. En pinne av hver kobles til GND, og deretter kobles den andre pinnen til A0, A1, A2 og A3 deretter. Så det er Socket 1, til A0, Socket 2 til A1, Socket 3 til A2, og Socket 4 til A3.

Deretter loddet jeg 4 ledninger til OLED -tilkoblingene, og trimmet ned overflødig loddetinn så mye som mulig. Du vil feste ledningene fra baksiden av skjermen, så du lodder på forsiden av skjermen.

Vær oppmerksom på pinnene! Noen OLED -er har GND på utsiden, deretter VCC, noen har VCC på utsiden, og deretter GND

Når du er loddet og du har trimmet eller flatet ned loddetilkoblingen så mye som mulig, trykker du forsiktig på skjermen til stedet. Det er litt av en tett passform, men vær oppmerksom på at forskjellige utskriftstoleranser kan påvirke dette, og derfor må du kanskje gjøre en liten etterbehandling for å få det til å passe. Når du er på plass, legg litt varmt lim over hvert av de fire hjørnene for å holde det på plass.

Koble alt til skjemaet og bildene, og når du er fornøyd, kan du varme Lim Pro Micro og RTC Clock på plass også, og deretter koble USB -forlengelsen til Pro Micro.

Jeg brukte en mikro -USB -forlengelse slik at a) USB -en kan brukes til å levere strøm, men mer, b) slik at det var mulig å omprogrammere Pro Micro om nødvendig uten å trekke alt fra hverandre

Når du er fornøyd, skrur du saken sammen med de fire skruene

Trinn 4: Pluggene

Pluggene!
Pluggene!
Pluggene!
Pluggene!
Pluggene!
Pluggene!

Måten dette fungerer på er at for all del, en del av designet fungerer som et "ohmmeter". Et ohmmeter er et instrument for måling av elektrisk motstand. De fleste multimetre har denne funksjonen der du velger skalaen og deretter måler en motstand for å finne verdien. Arbeidsprinsippet er at du kobler en KJENT motstand til +ve, som deretter kobles til en UKjent motstand, som kobles til -ve. Fugen mellom de 2 motstandene kobles til den analoge Arduino -pinnen slik at den kan lese spenningen og beregne motstanden.

Den fungerer som en spenningsdeler og beregner motstanden til den ukjente motstanden.

Som et spenningsdeler -nettverk av motstander R1 og R2, Vout = Vin * R2 / (R1 + R2) - Vi bruker 100k for vår kjente (R1) motstand. Dette gir oss "spenningsfallet"

Fra dette kan vi nå regne ut motstanden til den ukjente (R2) motstanden, R2 = Vout * R1 / (Vin - Vout) - hvor R1 er vår 100k (100.000 ohm) motstand

Ved å bruke en annen motstand i hver pluggkontakt du ønsker å bruke, kan du deretter justere koden tilsvarende avhengig av kontakten i bruk.

Jeg bruker 4 plugger. Jeg valgte å bruke:

Kjent motstand (x4) - 100k

Stikkontakt 1 - 5.6k

Stikkontakt 2 - 10k

Jackplugg 3 - 22k

Jackplugg 4 - 39k

Du kan selvfølgelig utvide dette og kode inn så mange du vil.

Trinn 5: Koden

Koden
Koden

For det første trenger du Arduino IDE, tilgjengelig herfra:

Du må også sørge for at du også har noen få Arduino -biblioteker:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (valgfritt):

En merknad om å velge riktig "Arduino" -kort. Opprinnelig startet jeg dette prosjektet med en Arduino Nano, fordi de er superbillige til omtrent £ 3-£ 4 i Storbritannia, eller så lite som £ 1,50 hvis du kjøper fra AliExpress (men ikke bry deg om 30-50 dagers ventetid). Problemet med Nano er at SRAM er 2 KB (2048 byte). Denne skissen bruker 1728 byte dynamisk minne med globale variabler. Det er 84% av SRAM, og bare 320 byte er gratis for lokale variabler. Dette var utilstrekkelig og ville få Nano til å låse seg og fryse.

Pro Micro (Leonardo) har 2,5K SRAM (2560 byte), noe som betyr at det er 694 byte gratis for lokale variabler (skissen bruker 72% av Pro Micros SRAM). Så langt har dette vist seg å være tilstrekkelig og stabilt for min bruk. Hvis du har tenkt å bruke mange plugger, kan det være lurt å vurdere å bruke noe med mer SRAM.

Når det gjelder Flash -lagring, bruker denne skissen 88% (25252 byte) av 30k (ATMega328p [Nano] og ATMega32u4 [Pro Micro] har begge 32k, men 2k er reservert for bootloader)

Jeg har skrevet hundrevis av Arduino -skisser gjennom årene, men jeg er en hobbyist - så husk at noen deler av koden kan være ineffektive, eller det kan være "bedre måter å gjøre dette" på. Når det er sagt, fungerer det perfekt for meg, og jeg er fornøyd med det. Jeg brukte biblioteker som SKAL fungere på de fleste tavler, enten det er AVR (mest grunnleggende Arduino's) eller SAMD21 (jeg har en håndfull Cortex M0 -enheter)

Jeg ønsket også å vise en annen grafikk basert på kontakten som ble brukt. Hvis du vil lage din egen, er dette en glimrende enkel guide til hvordan du lager C -matrisen for bilder som skal brukes med denne skjermen:

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

Sørg for å bruke PROGMEM for grafikken din. F.eks.:

statisk const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Etter design vil skjermen "timeout" etter 5 sekunder og gå tilbake til å vise tiden.

De fleste innstillingene finner du i Settings.h, spesielt navnet på de tilhørende pluggene er kodet her:

#define PLUG1 "NØKLER"

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

Det er også noen viktige deler av koden inne i variabler. H

flyte R1 = 96700,0;

flyte R2 = 96300,0; flyte R3 = 96500.0; flyte R4 = 96300,0;

Dette er de KJENTE motstandsverdiene, i ohm, for hver av de 4 motstandene.

R1 koblet til A0, R2 til A1, R3 til A2 og R4 til A3.

Det anbefales å måle dine 100k motstander ved hjelp av et multimeter og bruke den nøyaktige verdien av motstanden. Ta målingen av motstanden når alt er koblet til. (Men ikke slått på).

Når du velger motstander for jackpluggene, må du sørge for at det er et godt ohm -gap mellom dem, og når du koder dem, gir du deg selv et fint område lavere og høyere enn din valgte motstand. Her er det jeg brukte i koden min:

flyte P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6K

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

Årsaken til dette er å ta hensyn til den analoge avlesningen og de mindre spenningssvingningene osv

Så det som skjer er at hvis den oppdagede motstanden er mellom 4000 ohm og 7000 ohm, antar vi at du har brukt en 5,6 k motstand, og derfor vil koden se dette som en plugg 1. Hvis den målte motstanden er mellom 8000 ohm og 12000 ohm, antagelsen er at det er en 10k motstand og er Jack Plug 2 og så videre.

Hvis du trenger å gjøre noen feilsøking (ikke la det være ukommentert i 'produksjon' siden seriell feilsøking bruker dyrebar ram), må du bare kommentere linjene du trenger øverst i Innstillinger. H

//#definere SERIAL_DEBUG

//#definere WAIT_FOR_SERIAL

For å ikke kommentere, fjern //. For å kommentere linjen ut igjen, legg til // på nytt på forsiden av linjen.

SERIAL_DEBUG muliggjør seriell feilsøking og bruk av ting som (for eksempel)

Serial.println (F ("hei verden"));

WAIT_FOR_SERIAL er et ekstra trinn, det vil si at koden vil ikke fortsette før du åpner Serial Monitor. Dette er med på å sikre at du ikke går glipp av viktige seriemeldinger. - ALDRI FORLAT DETTE AKTIVERT

Hvis du lar WAIT_FOR_SERIAL være aktivert, vil du ikke kunne bruke nøkkelholderen din i noen "virkelige verden" -miljø, da den sitter fast og venter på Arduino IDE Serial -skjermen før den kan fortsette inn i hovedløkken i skissen. Når du har fullført feilsøkingen, må du fjerne kommentaren til denne linjen igjen og laste opp skissen igjen for produksjon/ferdigstillelse.

Når du bruker alternativet SERIAL_DEBUG, inneholder koden min følgende:

#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 (socket+1); Serial.print (F ("har en resitans på:")); Serial.println (motstand); } #slutt om

Den siste Serial.print -linjen vil fortelle deg hva motstanden er, i ohm, for den sist innsatte kontakten. Så du kan også bruke denne skissen som et ohmmeter for å kontrollere motstanden til en plugg.

Trinn 6: Notater

Jeg tror jeg har dekket alt, men vær så snill å kommenter, så skal jeg gjøre mitt beste for å lese og svare når jeg kan:)

Beklager den litt dårlige videoen - jeg har ikke et stativ, omkodingsoppsett eller et skikkelig arbeidsrom så å si, så dette ble filmet (dårlig) og holdt telefonen i den ene hånden og prøvde å demonstrere den med den andre.

Takk for at du leste.

Anbefalt: