Sisällysluettelo:

Arduino Guitar Jack -avaimenpidike, jossa Jack -tunnistus ja OLED: 7 vaihetta
Arduino Guitar Jack -avaimenpidike, jossa Jack -tunnistus ja OLED: 7 vaihetta

Video: Arduino Guitar Jack -avaimenpidike, jossa Jack -tunnistus ja OLED: 7 vaihetta

Video: Arduino Guitar Jack -avaimenpidike, jossa Jack -tunnistus ja OLED: 7 vaihetta
Video: Внутри педали громкости KORG KVP-001, разборка и схема 2024, Heinäkuu
Anonim
Image
Image
Arduino Guitar Jack -avaimenpidike, jossa Jack -tunnistus ja OLED
Arduino Guitar Jack -avaimenpidike, jossa Jack -tunnistus ja OLED

Esittely:

Tässä ohjeessa kerrotaan yksityiskohtaisesti Arduino -pohjaisen Guitar Jack -liitännäisen avaimenpidikkeen rakentamisesta

Tämä on ensimmäinen ohjeeni, joten ole kärsivällinen, sillä voin tehdä muutoksia / päivityksiä matkan varrella

Vaihe 1: Osat ja työkalut

Osat ja työkalut
Osat ja työkalut
Osat ja työkalut
Osat ja työkalut
Osat ja työkalut
Osat ja työkalut

Suurin osa osista, jotka ostin Amazon.co.ukista tai eBaysta, jotkut minulla oli jo käynnissä - Tässä on luettelo tarvitsemistasi osista.

Amazon -linkit ovat kaikki Affiliate -linkkejä, saatat löytää halvempia muualta - käytän Amazon Primea paljon, joten Amazon sattui olemaan minun go -to.

Halusin pitää tämän rakenteen melko edullisena ja budjettiystävällisenä. Voit halutessasi käyttää isompaa TFT -näyttöä ja erilaista Arduinoa. Älä käytä NANO -laitetta, koska se kaatuu suuren muistin käytön vuoksi. Koodi käyttää noin 72% Pro Micro: n RAM -muistista ja on vakaa, mutta testauksen perusteella NANO kaatuu ja jäätyy.

(Lisätietoja Koodivaiheessa.)

OSAT

1x Arduino Pro Micro -

1x 0,96 OLED, keltainen ja sininen näyttö -

4x WS2812 'Pixels' -

1x DS3231 RTC -

4x 1/4 Mono Jack (Tai niin monta kuin haluat) - Amazon (Gold) tai Amazon (Silver) tai eBay.co.uk

1x sekoitettu vastuspaketti -

4x 1/4 kitaratulpat -

1x Micro USB -kaapelin jatkojohto -

4x M3 -ruuvia

TYÖKALUT JA MATERIAALIT

- Juotin (Tämän ostin - TS100 - koska siinä oli lisävinkkejä

- Juotos

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

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

- Langanleikkurit/irrotusaineet (https://amzn.to/2KzqUzp)

- 3D -tulostin tai 3D -tulostuspalvelu

VALINNAINEN - Nämä kohteet ovat valinnaisia riippuen siitä, miten haluat yhdistää kaiken

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

- Ruuviliittimet (2 -napainen | 3 -napainen | 4 -napainen)

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

Vaihe 2: Kotelon 3D -tulostus

Kotelon 3D -tulostus
Kotelon 3D -tulostus
Kotelon 3D -tulostus
Kotelon 3D -tulostus
Kotelon 3D -tulostus
Kotelon 3D -tulostus
Kotelon 3D -tulostus
Kotelon 3D -tulostus

Tulostin omani Creality CR-10S -laitteelleni Black PLA+: lla (https://amzn.to/2X2SDtE)

Tulostin 0,2 kerroksen korkeudella 25% täyteaineella.

Vaihe 3: Laita kaikki yhteen + kaavio

Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio
Yhdistetään kaikki + kaavio

Kuinka päätät yhdistää Arduinoosi, on täysin sinun tehtäväsi - henkilökohtaisesti päätin tehdä itsestäni niin sanotun "kilven". Kilven valmistamiseksi olen juottanut naaraspuoliset otsikot veroboardiin Pro Micro -mallin mukaan, lisäsin sitten +5v ja GND -kiskon vastakkaisiin päihin. Olen käyttänyt hyppyjohtoa +5v: n liittämiseen nykyiseen 5v "kiskoon", ja tein saman GND: lle. Lisäsin sitten 4x 100k vastukseni, joiden toinen pää oli kytketty +5V: iin kaikille, ja sitten toinen puoli muodostaa liitännät A0, A1, A2 ja A3. Olen sitten lisännyt ruuviliittimet analogisiin nastoihin A0, A1, A2 & A3 ja myös nastat 2 (SDA), 3 (SCL) & 4

Mittaa johdot ja katkaise sopivan pituisiksi. Aloitin ensin WS2812 Pixel LED -valoilla - ENSIMMÄINEN WS2812 LED yhdistää +5v Arduinosta, GND Arduinosta ja DIN yhdistää nastaan 4. Tämän jälkeen loput 3 on ketjutettu yhteen, ketjuttaen kaikki 5v> 5v, GND> GND -nastat ja DOUT yhdestä pikselistä, muodostaa yhteyden seuraavan DINiin. Kun ne on juotettu, paina ne varovasti yläreunassa oleviin neliönreikiin ja kuumaa liimaa paikoilleen sekä suojaa takaosaa mahdollisilta liitoksilta tai oikosululta.

LEDien jälkeen ruuvasin Guitar Jack -liitännät sisään. Yksi nasta kustakin liitetään GND: hen ja sitten kunkin toinen nasta A0, A1, A2 ja A3 vastaavasti. Joten se on pistorasia 1, A0, kanta 2 - A1, kanta 3 - A2 ja liitin 4 - A3.

Seuraavaksi juotin 4 johtoa OLED -liitäntöihin ja leikkasin ylimääräisen juotteen mahdollisimman alas. Haluat kiinnittää johdot näytön takaa, joten juotat näytön etuosaan.

Kiinnitä huomiota nastoihin! Joillakin OLED -laitteilla on GND ulkopuolella, sitten VCC, joillakin on VCC ulkopuolella ja sitten GND

Kun juotettu ja juottoliitäntä on viimeistelty tai litistetty niin paljon kuin mahdollista, paina näyttö varovasti paikkaansa. Se on rakenteeltaan hieman tiukka, mutta huomaa, että erilaiset tulostustoleranssit voivat vaikuttaa tähän, joten sinun on ehkä tehtävä joitakin pieniä jälkikäsittelyjä, jotta se sopisi. Kun se on paikallaan, aseta kuumaa liimaa jokaisen 4 kulman yli pitämään se paikallaan.

Yhdistä kaikki kaavion ja kuvien mukaisiksi, ja kun olet tyytyväinen, voit liimata myös Pro Micro- ja RTC -kellon paikalleen ja liittää sitten USB -laajennuksen Pro Micro -laitteeseen.

Käytin mikro -USB -laajennusta, jotta a) USB: tä voidaan käyttää virran tuottamiseen, mutta enemmän, b) jotta Pro Micro voitaisiin tarvittaessa ohjelmoida uudelleen irrottamatta kaikkea

Kun olet tyytyväinen, ruuvaa kotelo yhteen neljällä ruuvilla

Vaihe 4: Pistokkeet

Pistokkeet!
Pistokkeet!
Pistokkeet!
Pistokkeet!
Pistokkeet!
Pistokkeet!

Tämä toimii siten, että osa suunnittelua toimii kaikilta osin "ohmimittarina". Ohmimittari on laite sähkövastuksen mittaamiseen. Useimmilla yleismittarilla on tämä toiminto, jossa valitset asteikon ja mittaat sitten vastuksen löytääksesi sen arvon. Toimiva periaate on, että liität TIETETTYN vastuksen +ve: hen, joka sitten yhdistetään Tuntemattomaan vastukseen, joka yhdistää -ve. Kahden vastuksen välinen liitos yhdistetään Arduinon analogiseen nastaan, jotta se voi lukea jännitteen ja laskea vastuksen.

Se toimii kuin jännitteenjakaja ja laskee tuntemattoman vastuksen vastuksen.

Vastusten R1 ja R2 jännitteenjakajaverkkona, Vout = Vin * R2 / (R1 + R2) - Käytämme 100k tunnetulle (R1) vastuksellemme. Tämä antaa meille "jännitehäviön"

Tästä voimme nyt selvittää tuntemattoman (R2) vastuksen vastuksen, R2 = Vout * R1 / (Vin - Vout) - missä R1 on 100 000 (100 000 ohmin) vastuksemme

Käyttämällä eri vastusta kussakin pistokeliittimessä, jota haluat käyttää, voit sitten säätää koodia sen mukaan, mikä liitin on käytössä.

Käytän 4 pistoketta. Päätin käyttää:

Tunnettu vastus (x4) - 100k

Liitin 1-5,6 kt

Liitin 2-10k

Liitin 3-22k

Liitin 4-39k

Voit tietysti laajentaa tätä ja koodata niin monta kuin haluat.

Vaihe 5: Koodi

Koodi
Koodi

Ensinnäkin tarvitset Arduino IDE: n, joka on saatavana täältä:

Sinun on myös varmistettava, että sinulla on myös muutama Arduino -kirjasto:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (valinnainen):

Huomautus oikean "Arduino" -levyn valitsemisesta. Alun perin aloitin tämän projektin Arduino Nanolla, koska ne ovat erittäin halpoja noin 3–4 puntaa Isossa-Britanniassa tai jopa 1,50 puntaa, jos ostat AliExpressistä (mutta älä välitä 30–50 päivän odottamisesta)). Nanon ongelma on, että sen SRAM on 2 kt (2048 tavua). Tämä luonnos käyttää 1728 tavua dynaamista muistia globaaleilla muuttujilla. Se on 84% SRAM: sta, jolloin vain 320 tavua on vapaata paikallisille muuttujille. Tämä ei riittänyt ja saisi nanon lukkiutumaan ja jäätymään.

Pro Micro (Leonardo) -laitteessa on 2,5 kt SRAM (2560 tavua), mikä tarkoittaa, että paikallisille muuttujille on vapaa 694 tavua (luonnos käyttää 72% Pro Micron SRAM -muistista). Toistaiseksi tämä on osoittautunut täysin riittäväksi ja vakaaksi käyttööni. Jos aiot käyttää monia jakkipistokkeita, sinun kannattaa harkita jotain, jossa on enemmän SRAM: ää.

Mitä tulee Flash -tallennustilaan, tämä luonnos käyttää 88% (25252 tavua) 30k: sta (ATMega328p [Nano] ja ATMega32u4 [Pro Micro] ovat molemmat 32k, mutta 2k on varattu käynnistyslataimelle)

Olen kirjoittanut satoja Arduinon luonnoksia vuosien varrella, mutta olen harrastaja - joten muista, että jotkin koodin osat voivat olla tehottomia tai "parempia tapoja tehdä tämä" skenaarioita. Näin ollen se toimii täydellisesti minulle ja olen tyytyväinen siihen. Käytin kirjastoja, joiden PITÄISI toimia useimmilla levyillä, olivatpa ne sitten AVR (Arduinon perus) tai SAMD21 (minulla on kourallinen Cortex M0 -laitteita)

Halusin näyttää erilaisen grafiikan myös käytetyn liittimen perusteella. Jos haluat tehdä oman, tämä on loistava yksinkertainen opas C -taulukon luomiseen tämän näytön kanssa käytettäville kuville:

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

Muista käyttää grafiikassa PROGMEM -ohjelmaa. Esim:

staattinen const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Suunnittelun mukaan näyttö "aikakatkaisee" 5 sekunnin kuluttua ja palaa ajan näyttöön.

Suurin osa asetuksista löytyy Asetuksista. H, erityisesti niihin liittyvien pistokkeiden nimet on koodattu tähän:

#define PLUG1 "AVAIMET"

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

Muuttujien sisällä on myös joitakin tärkeitä koodin osia. H

kelluva R1 = 96700,0;

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

Nämä ovat kunkin 4 vastuksen TUNNETUT vastusarvot ohmeina.

R1 kytketty A0: een, R2 - A1, R3 - A2 ja R4 - A3.

On suositeltavaa mitata 100k vastukset yleismittarilla ja käyttää vastuksen tarkkaa arvoa. Mittaa vastus, kun kaikki on kytketty. (Mutta ei päällä).

Kun valitset liittimiisi vastuksia, varmista, että niiden välillä on hyvä ohmiväli, ja kun koodaat niitä, anna itsellesi mukava alue pienempi ja korkeampi kuin valitsemasi vastus. Tässä on mitä käytin koodissani:

kelluva P1_MIN = 4000,0, P1_MAX = 7000,0; // 5,6 kt

kelluva 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; // 39K

Syynä tähän on ottaa huomioon analoginen lukema ja pienet jännitteen vaihtelut jne

Joten mitä tapahtuu, jos havaittu vastus on välillä 4000 ohmia ja 7000 ohmia, oletamme, että olet käyttänyt 5,6 k: n vastusta, joten koodi näkee tämän pistokkeen pistokkeena 1. Jos mitattu vastus on välillä 8000 ohmia ja 12000 ohmia, oletetaan, että se on 10k vastus ja Jack Plug 2 ja niin edelleen.

Jos sinun on tehtävä virheenkorjausta (älä jätä kommentoimatonta 'tuotantoon', koska sarjamuotoinen virheenkorjaus kuluttaa arvokasta ram -muistia), yksinkertaisesti poista tarvitsemasi rivit Asetusten yläosasta. H

//#define SERIAL_DEBUG

//#define WAIT_FOR_SERIAL

Voit poistaa kommentin poistamalla //…. kommentoidaksesi linjaa takaisin, lisää // uudelleen rivin eteen.

SERIAL_DEBUG mahdollistaa sarjamuotoisen virheenkorjauksen ja esimerkiksi (esim.)

Serial.println (F ("hello world"));

WAIT_FOR_SERIAL on lisävaihe, eli koodi ei jatku, ennen kuin avaat sarjamonitorin. Tämä auttaa varmistamaan, että et menetä tärkeitä sarjasanomia. - ÄLÄ KOSKAAN jätä tätä käyttöön

Jos jätät WAIT_FOR_SERIAL -toiminnon käyttöön, et voi käyttää avaimenpidintäsi missään "reaalimaailman" ympäristössä, koska se jää jumiin odottamaan Arduino IDE Serial -monitoria ennen kuin se voi jatkaa luonnoksen pääsilmukkaan. Kun olet suorittanut virheenkorjauksen, varmista, että poistat tämän rivin kommentin uudelleen ja lähetä luonnos uudelleen tuotantoon/valmistumiseen.

Kun käytän SERIAL_DEBUG -vaihtoehtoa, koodini sisältää seuraavat:

#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 [")); Sarjanjälki (i); Sarjanjälki (F ("] =")); Sarja.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Sarja.println (); if (INSERTED [pistorasia]) {Serial.print (F ("Plug in socket")); Sarjanjälki (pistorasia+1); Serial.print (F ("resitanssi on:")); Serial.println (vastus); } #loppu Jos

Viimeinen Serial.print -rivi kertoo, mikä vastus on ohmeina viimeksi asetetulle liittimelle. Voit siis käyttää tätä luonnosta myös eräänlaisena ohmimittarina pistokkeen pistokkeen resistanssin tarkistamiseen.

Vaihe 6: Huomautuksia

Luulen, että olen kattanut kaiken, mutta kommentoikaa, ja yritän parhaani mukaan lukea ja vastata, kun voin:)

Pahoittelut hieman huonosta videosta - minulla ei ole jalustaa, uudelleenkoodausasetuksia tai niin sanottua kunnollista työskentelytilaa, joten tämä kuvattiin (huonosti) pitäen puhelinta toisessa kädessä ja yrittäessään demoida sitä toisella.

Kiitos lukemisesta.

Suositeltava: