Tartalomjegyzék:

Arduino gitár Jack kulcstartó Jack felismeréssel és OLED: 7 lépés
Arduino gitár Jack kulcstartó Jack felismeréssel és OLED: 7 lépés

Videó: Arduino gitár Jack kulcstartó Jack felismeréssel és OLED: 7 lépés

Videó: Arduino gitár Jack kulcstartó Jack felismeréssel és OLED: 7 lépés
Videó: pedalSHIELD MEGA Arduino Guitar Pedal 2024, November
Anonim
Image
Image
Arduino gitár Jack kulcstartó Jack felismeréssel és OLED -el
Arduino gitár Jack kulcstartó Jack felismeréssel és OLED -el

Bevezető:

Ez az utasítás részletesen leírja az Arduino alapú Guitar Jack plugin kulcstartóm felépítését

Ez az első tanulságos, ezért kérem, tartson velem, mert változtatásokat / frissítéseket tehetek az út során

1. lépés: Alkatrészek és eszközök

Alkatrészek és eszközök
Alkatrészek és eszközök
Alkatrészek és eszközök
Alkatrészek és eszközök
Alkatrészek és eszközök
Alkatrészek és eszközök

A legtöbb alkatrészt az Amazon.co.uk -ról vagy az eBay -ről vásároltam, néhányat már rúgtam is - Itt van egy lista arról, hogy mire lesz szüksége.

Az Amazon linkek mind affiliate linkek, máshol olcsóbbakat is találhat - én sokat használom az Amazon Prime -ot, így az Amazon véletlenül a kedvencem.

Azt akartam, hogy ez a konstrukció meglehetősen alacsony költségű és költségkímélő legyen. Használhat nagyobb TFT -képernyőt, ahogy szeretné, valamint egy másik Arduino -t. Ne használjon NANO -t, mert a nagy memóriahasználat miatt összeomlik. A kód a Pro Micro RAM -jának körülbelül 72% -át használja, és stabil, de a tesztelés során a NANO összeomlik és lefagy.

(További részletek a Kód lépésben.)

ALKATRÉSZEK

1x Arduino Pro Micro -

1x 0,96 OLED sárga és kék kijelzővel -

4x WS2812 "Pixelek" -

1x DS3231 RTC -

4x 1/4 Mono Jack (vagy annyit, amennyit csak akar) - Amazon (arany) vagy Amazon (ezüst) vagy eBay.co.uk

1x vegyes ellenállás csomag -

4x 1/4 gitárcsatlakozók -

1x Micro USB kábel hosszabbító kábel -

4x M3 csavar

SZERSZÁMOK ÉS ANYAGOK

- Forrasztópáka (ezt vettem - egy TS100 -at -, mivel további tippeket kapott

- Forrasztás

- Forró ragasztópisztoly (https://amzn.to/2UTd9PN)

- Vezeték (https://amzn.to/2VK2ILU)

- Drótvágók/levágók (https://amzn.to/2KzqUzp)

- 3D nyomtató vagy 3D nyomtatási szolgáltatás

OPCIONÁLIS - Ezek az elemek nem kötelezőek, attól függően, hogy hogyan kapcsol össze mindent

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

- Csavaros csatlakozók (2 pólusú | 3 pólusú | 4 pólusú)

- NYÁK -fejlécek (https://amzn.to/2X7RjWf)

2. lépés: A tok 3D nyomtatása

A tok 3D nyomtatása
A tok 3D nyomtatása
A tok 3D nyomtatása
A tok 3D nyomtatása
A tok 3D nyomtatása
A tok 3D nyomtatása
A tok 3D nyomtatása
A tok 3D nyomtatása

Az enyémet a Creality CR-10S-re nyomtatottam, Black PLA+ használatával (https://amzn.to/2X2SDtE)

0,2 réteg magasságban nyomtam, 25% kitöltéssel.

3. lépés: Összerakás + vázlat

Összerakás + Séma
Összerakás + Séma
Összerakás + Séma
Összerakás + Séma
Összerakás + Séma
Összerakás + Séma
Összerakás + Séma
Összerakás + Séma

Az, hogy az Arduino -t hogyan csatlakoztatod, teljesen rajtad múlik - én személy szerint úgy döntöttem, hogy úgymond "pajzsot" csinálok magamnak. A pajzs elkészítéséhez női fejléceket forrasztottam a veroboardra, hogy illeszkedjenek a Pro Micro -hoz, majd hozzáadtam egy +5v és GND sínt a szemközti végén. Ugróvezetékkel csatlakoztattam a +5V -ot a mostani 5 V -os sínemhez, és ugyanezt tettem a GND esetében is. Ezután hozzáadtam a 4x 100 ezer ellenállásomat, egyik végüket +5V -ra kötöttem mindegyikre, majd a másik oldal csatlakozik az A0, A1, A2 és A3 -hoz. Ezután csavaros csatlakozókat adtam hozzá az A0, A1, A2 és A3 analóg csapokhoz, valamint a 2 -es (SDA), 3 -as (SCL) és 4 -es csapokhoz

Mérje meg a vezetékeket és vágja megfelelő hosszúságúra. Először a WS2812 Pixel LED -ekkel kezdtem - az ELSŐ WS2812 LED +5V -ra csatlakozik az Arduino -ról, a GND az Arduino -ról, és a DIN csatlakozik a 4 -es tűhöz. GND> GND csapok és DOUT az egyik Pixelből, a következő DIN -hez csatlakozik. Forrasztás után óvatosan nyomja be a tetején lévő négyzet alakú lyukakba, és helyezzen fel forró ragasztót, és védje a hátlapot a véletlen csatlakozásoktól vagy rövidzárlatoktól.

A LED -ek után csavartam be a Guitar Jack foglalatokat. Mindegyikből egy tüske csatlakozik a GND -hez, majd mindegyik 2. csapja az A0, A1, A2 és A3 -hoz. Tehát ez az 1 -es foglalat, az A0, a 2 -es foglalat az A1 -hez, a 3 -as foglalat az A2 -hez és a 4 -es aljzat az A3 -hoz.

Ezután 4 vezetéket forrasztottam az OLED csatlakozásokhoz, és amennyire csak lehetséges, levágtam a felesleges forrasztást. A vezetékeket a képernyő hátuljáról szeretné csatlakoztatni, így a képernyő elejére forraszt.

Ügyeljen a csapokra! Egyes OLED -eken kívül GND, majd VCC, néhányon kívül VCC, majd GND van

Ha forrasztott, és amennyire csak lehetséges, vágja le vagy lapítsa le a forrasztócsatlakozót, óvatosan nyomja be a képernyőt a helyére. A tervezés szerint kissé szoros illeszkedés, de ne feledje, hogy a különböző nyomtatási tűrések befolyásolhatják ezt, ezért előfordulhat, hogy néhány kisebb utófeldolgozást kell végrehajtania, hogy illeszkedjen. Miután a helyén van, tegyen forró ragasztót a 4 sarok mindegyikére, hogy a helyén maradjon.

Csatlakoztasson mindent a vázlatos rajzhoz és a képekhez, és ha elégedett, ragaszthatja a helyére a Pro Micro és az RTC órát is, majd csatlakoztassa az USB -hosszabbítót a Pro Micro -hoz.

Mikro -USB -hosszabbítót használtam, hogy a) az USB -t tápellátásra lehessen használni, de még inkább, b) úgy, hogy szükség esetén át lehetett programozni a Pro Micro -t anélkül, hogy mindent szét kellett volna szedni.

Ha boldog, csavarja össze a házat a 4 csavar segítségével

4. lépés: A dugók

A dugók!
A dugók!
A dugók!
A dugók!
A dugók!
A dugók!

Ez úgy működik, hogy a tervezés egy része mindenképpen "ohmmérő". Az ohmmérő az elektromos ellenállás mérésére szolgáló eszköz. A legtöbb multiméter rendelkezik ezzel a funkcióval, amikor kiválasztja a skálát, majd megmér egy ellenállást, hogy megtalálja annak értékét. A működési elv az, hogy egy ISMERETT ellenállást csatlakoztat a +ve -hez, amelyet ezután egy ISMERETLEN ellenálláshoz csatlakoztat, amely a -ve -hez csatlakozik. A 2 ellenállás közötti kötés az Arduino analóg csaphoz csatlakozik, így le tudja olvasni a feszültséget és kiszámítja az ellenállást.

Úgy működik, mint egy feszültségosztó, és kiszámítja az ismeretlen ellenállás ellenállását.

Az R1 és R2 ellenállások feszültségosztó hálózataként

Vout = Vin * R2 / (R1 + R2) - 100 k -t használunk az ismert (R1) ellenállásunkhoz. Ez adja a "feszültségcsökkenést"

Ebből most ki tudjuk dolgozni az ismeretlen (R2) ellenállás ellenállását, R2 = Vout * R1 / (Vin - Vout) - ahol R1 a 100k (100 000 ohm) ellenállásunk

Ha minden egyes használni kívánt csatlakozóaljzatban más ellenállást használ, akkor a kódot ennek megfelelően módosíthatja a használt jacktől függően.

4 jack dugót használok. A használat mellett döntöttem:

Ismert ellenállás (x4) - 100k

Jack dugó 1 - 5,6 k

Jack dugó 2-10k

Jack dugó 3 - 22k

Jack dugó 4 - 39k

Természetesen bővítheti ezt, és kódolhat, amennyit csak akar.

5. lépés: A kód

A kód
A kód

Először is szüksége lesz az Arduino IDE -re, amely innen érhető el:

Azt is meg kell győződnie arról, hogy van néhány Arduino könyvtára is:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (opcionális):

Megjegyzés a megfelelő "Arduino" tábla kiválasztásáról. Eredetileg egy Arduino Nano-val indítottam el ezt a projektet, mert szuper olcsók, kb.). A probléma a Nano -val az, hogy az SRAM mérete 2 KB (2048 bájt). Ez a vázlat 1728 bájt dinamikus memóriát használ globális változókkal. Ez az SRAM 84% -a, így csak 320 bájt marad szabad a helyi változók számára. Ez nem volt elegendő, és a Nano záródását és lefagyását okozta volna.

A Pro Micro (Leonardo) 2.5K SRAM -tal (2560 bájt) rendelkezik, ami azt jelenti, hogy 694 bájt szabad a helyi változók számára (a vázlat a Pro Micro SRAM -jának 72% -át használja). Ez eddig tökéletesen megfelelőnek és stabilnak bizonyult a használatomhoz. Ha sok jack dugót szeretne használni, akkor érdemes több SRAM -ot használni.

Ami a Flash -tárolót illeti, ez a vázlat a 30k 88% -át (25252 bájt) használja (az ATMega328p [Nano] és az ATMega32u4 [Pro Micro] 32 k -t tartalmaz, de 2 k -t a rendszerbetöltő tartogat)

Több száz Arduino -vázlatot írtam az évek során, de hobbi vagyok - szóval ne feledje, hogy a kód egyes részei nem hatékonyak, vagy léteznek "jobb módszerek erre". Ezzel együtt tökéletesen működik nálam, és elégedett vagyok vele. Olyan könyvtárakat használtam, amelyeknek a legtöbb táblán működniük kellene, legyen az AVR (a legalapvetőbb Arduino) vagy SAMD21 (van egy maroknyi Cortex M0 eszközöm)

Más grafikát akartam megjeleníteni a használt jack alapján is. Ha sajátot szeretne készíteni, ez egy ragyogó, egyszerű útmutató a C -tömb létrehozásához a kijelzővel használható képekhez:

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

Győződjön meg róla, hogy a PROGMEM programot használja a grafikához. Például:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

A tervezés szerint a képernyő 5 másodperc múlva "időtúllép", és visszatér az idő megjelenítéséhez.

A legtöbb beállítás megtalálható a Settings.h -ban, különösen a kapcsolódó jack dugók neve itt van kódolva:

#define PLUG1 "KULCSOK"

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

A kód néhány fontos része is található a Változókon belül.h

úszó R1 = 96700,0;

úszó R2 = 96300,0; úszó R3 = 96500,0; úszó R4 = 96300,0;

Ezek a 4 ellenállás mindegyikének ismert ellenállási értékei, ohmban.

R1 csatlakozik az A0 -hoz, R2 - A1, R3 - A2 és R4 - A3.

Célszerű multiméterrel megmérni 100k ellenállását, és az ellenállás pontos értékét használni. Mérje meg az ellenállást, miután minden csatlakoztatva van. (De nincs bekapcsolva).

Amikor ellenállásokat választ a jackdugókhoz, győződjön meg róla, hogy jó ohmos rés van közöttük, és kódolásuk során adjon meg magának egy jó és alacsonyabb tartományt, mint a választott ellenállás. Ezt használtam a kódomban:

úszó P1_MIN = 4000,0, P1_MAX = 7000,0; 5,6K

úszó P2_MIN = 8000,0, P2_MAX = 12000,0; // 10K úszó P3_MIN = 20000,0, P3_MAX = 24000,0; // 22K úszó P4_MIN = 36000,0, P4_MAX = 42000,0; 39K

Ennek oka az analóg leolvasás és a kisebb feszültségingadozások stb

Tehát mi történik, ha az észlelt ellenállás 4000 ohm és 7000 ohm között van, feltételezzük, hogy 5,6 k ellenállást használt, és így a kód ezt Jack Plug 1 -nek fogja látni. Ha a mért ellenállás 8000 ohm és 12000 ohm, a feltételezés az, hogy ez egy 10k ellenállás, és Jack Plug 2, és így tovább.

Ha valamilyen hibakeresést kell végrehajtania (Ne hagyja megjegyzés nélkül a „gyártásban”, mivel a soros hibakeresés értékes ramot használ fel), egyszerűen vegye ki a megjegyzéseket a Beállítások tetején található h sorokból.

//#define SERIAL_DEBUG

//#define WAIT_FOR_SERIAL

A megjegyzés visszavonásához egyszerűen távolítsa el a //…. a sor visszacsatolásához adja hozzá újra a // karaktert a sor elejéhez.

A SERIAL_DEBUG lehetővé teszi a soros hibakeresést és olyan dolgok használatát, mint pl.

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

A WAIT_FOR_SERIAL egy további lépés, ami azt jelenti, hogy a Serial Monitor megnyitásáig a kód nem folytatódik. Ez biztosítja, hogy ne hagyjon ki egyetlen fontos soros üzenetet sem. - SOHA NE HAGYJA EL EZT

Ha engedélyezi a WAIT_FOR_SERIAL programot, akkor nem tudja használni a kulcstartóját semmilyen "valós világ" környezetben, mivel elakad az Arduino IDE soros monitorra várva, mielőtt folytatódhat a vázlat fő hurkában. Miután befejezte a hibakeresést, győződjön meg arról, hogy ismét visszavonta ezt a sort, és töltse fel újra a vázlatot a gyártáshoz/befejezéshez.

A SERIAL_DEBUG opció használatakor a kódom a következőket tartalmazza:

#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 [")); Sorozatnyomat (i); Sorozatnyomat (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Sorozat.println (); if (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Soros.nyomtatás (foglalat+1); Serial.print (F ("resitanciája:")); Soros.println (ellenállás); } #endif

Az utolsó Serial.print sor megmondja, hogy mekkora az ellenállás ohmban az utoljára behelyezett csatlakozónál. Tehát ezt a vázlatot ohmmérőként is használhatja a jack dugó ellenállásának ellenőrzésére.

6. lépés: Megjegyzések

Azt hiszem, mindent leírtam, de kérjük, írjon megjegyzést, és mindent megteszek, hogy elolvassam és válaszoljak, amikor tudok:)

Elnézést a kissé gyenge videóért - nincs állványom, átkódolási beállításom, vagy úgymond megfelelő munkaterületem, így ezt (rosszul) rögzítették, amikor egyik kezében tartotta a telefont, a másikkal pedig demózni próbált.

Köszönöm, hogy elolvasta.

Ajánlott: