Talaan ng mga Nilalaman:

Arduino Guitar Jack Key Holder With Jack Recognition & OLED: 7 Hakbang
Arduino Guitar Jack Key Holder With Jack Recognition & OLED: 7 Hakbang

Video: Arduino Guitar Jack Key Holder With Jack Recognition & OLED: 7 Hakbang

Video: Arduino Guitar Jack Key Holder With Jack Recognition & OLED: 7 Hakbang
Video: Arduino Guitar Jack Key Holder with Jack Recognition & OLED 2024, Hulyo
Anonim
Image
Image
Arduino Guitar Jack Key Holder Sa Jack Recognition at OLED
Arduino Guitar Jack Key Holder Sa Jack Recognition at OLED

Panimula:

Ituturo sa tagubilin na ito ang pagbuo ng aking Arduino based Guitar Jack plugin key key

Ito ang aking kauna-unahang itinuro kaya't mangyaring makisama sa akin dahil maaari akong gumawa ng mga pagbabago / pag-update sa daan

Hakbang 1: Mga Bahagi at Tool

Mga Bahagi at Tool
Mga Bahagi at Tool
Mga Bahagi at Tool
Mga Bahagi at Tool
Mga Bahagi at Tool
Mga Bahagi at Tool

Karamihan sa mga bahagi na binili ko mula sa Amazon.co.uk o eBay, ang ilan ay nasisipa ko na - Narito ang isang listahan ng kakailanganin mo.

Ang mga link ng Amazon ay lahat ng mga link ng Kaakibat, maaari kang makahanap ng mas mura sa ibang lugar - marami akong ginagamit na Amazon Prime, kaya't ang Amazon lang ang aking pinuntahan.

Nais kong panatilihin ang build na ito na medyo mababa ang gastos at magiliw sa badyet. Maaari mong gamitin ang isang mas malaking screen ng TFT na nais mo, pati na rin ang ibang Arduino. Huwag gumamit ng isang NANO, dahil mag-crash ito dahil sa mataas na paggamit ng memorya. Gumagamit ang code ng halos 72% ng RAM ng Pro Micro at matatag, ngunit mula sa pagsubok, isang NANO ang mag-crash at mag-freeze.

(Higit pang mga detalye sa hakbang sa Code.)

BAHAGI

1x Arduino Pro Micro -

1x 0.96 OLED na may Dilaw at Asul na Display -

4x WS2812 'Pixels' -

1x DS3231 RTC -

4x 1/4 Mono Jack (O hangga't gusto mo) - Amazon (Gold) o Amazon (Silver) o eBay.co.uk

1x Mixed Resistor Pack -

4x 1/4 Guitar Jacks -

1x Micro USB Cable Extension Cable -

4x M3 Screws

TOOLS & MATERIALS

- Soldering Iron (Ito ang binili ko - isang TS100 - dahil may kasamang karagdagang mga tip

- Solder

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

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

- Mga cutter / striper ng wire (https://amzn.to/2KzqUzp)

- Serbisyo ng 3D Printer o 3D Pag-print

OPSYONAL - Ang mga item na ito ay opsyonal, depende sa kung paano mo pipiliin na ikonekta ang lahat

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

- Mga Konektor ng Screw Terminal (2 Pole | 3 Pole | 4 Pole)

- Mga Header ng PCB (https://amzn.to/2X7RjWf)

Hakbang 2: Pag-print ng Kaso ng 3D

Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D
Pagpi-print ng Kaso ng 3D

Nag-print ako ng minahan sa aking Creality CR-10S, gamit ang Black PLA + (https://amzn.to/2X2SDtE)

Nag-print ako sa taas na layer ng 0.2, na may 25% infill.

Hakbang 3: Pagsasama-sama sa Lahat ng Ito + Skema

Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema
Pagsasama-sama sa Lahat ng Ito + Skema

Kung paano mo pipiliin na ikonekta ang iyong Arduino ay nasa sa iyo mismo - personal kong pinili na gawing "kalasag" ang aking sarili kung gayon. Upang gawin ang kalasag, nag-solder ako ng mga babaeng header upang mag-veroboard upang tumugma sa Pro Micro, pagkatapos ay nagdagdag ako ng isang riles ng + 5v at GND, sa magkabilang mga dulo. Gumamit ako ng jumper wire upang ikonekta ang + 5v sa aking 5v 'rail' ngayon, at ginawa ang pareho para sa GND. Pagkatapos ay idinagdag ko ang aking 4x 100k resistors, ang isang dulo ay konektado sa + 5v para sa kanilang lahat, at pagkatapos ay ang kabilang panig ay kumokonekta sa A0, A1, A2 & A3 ayon sa pagkakabanggit. Pagkatapos ay nagdagdag ako ng mga screw terminal sa mga analog na pin na A0, A1, A2 & A3 at pati na rin Mga Pins 2 (SDA), 3 (SCL) & 4

Sukatin ang iyong mga kable at gupitin sa naaangkop na haba. Nagsimula ako sa WS2812 Pixel LEDs muna - ang UNANG WS2812 LED ay kumokonekta sa + 5v mula sa Arduino, GND mula sa Arduino, at ang DIN ay kumokonekta sa Pin 4. Pagkatapos nito, ang natitirang 3 ay ikinadena ng magkadena, kadena ang lahat ng 5v> 5v, GND> Mga pin ng GND at DOUT mula sa isang Pixel, kumokonekta sa DIN ng susunod. Kapag na-solder, pindutin ang mga ito nang marahan sa mga square hole sa itaas, at mainit na pandikit sa lugar at upang maprotektahan ang likuran mula sa anumang aksidenteng koneksyon o shorts.

Matapos ang mga LED, pagkatapos ay nag-screwed ako sa Guitar Jack Sockets. Ang isang pin ng bawat kumokonekta sa GND, at pagkatapos ang ika-2 pin ng bawat kumokonekta sa A0, A1, A2 & A3 nang naaayon. Kaya't ang Socket 1, hanggang A0, Socket 2 hanggang A1, Socket 3 hanggang A2, at Socket 4 hanggang A3.

Susunod ay nag-solder ako ng 4 na mga wire sa mga koneksyon sa OLED, at pinutol ang anumang labis na solder hangga't maaari. Nais mong ikabit ang iyong mga wires mula sa likuran ng screen, kaya naghihinang ka sa harap ng screen.

Bigyang-pansin ang mga pin! Ang ilang mga OLED ay mayroong GND sa labas, pagkatapos ang VCC, ang ilan ay may VCC sa labas, at pagkatapos ay GND

Kapag na-solder at na-trim o na-flat down na ang koneksyon ng solder hangga't maaari, dahan-dahang pindutin ang screen sa lokasyon nito. Ito ay isang maliit na masikip na magkasya sa pamamagitan ng disenyo, ngunit magkaroon ng kamalayan na ang iba't ibang mga pagpapahintulot sa pag-print ay maaaring makaapekto dito at sa gayon maaari mong gawin ang ilang menor de edad na pagpoproseso ng post upang gawin itong magkasya. Kapag nasa lugar na, maglagay ng ilang mainit na pandikit sa bawat isa sa 4 na sulok upang hawakan ito sa lugar.

Ikonekta ang lahat upang tumugma sa Schematic at mga larawan, at sa sandaling masaya, maaari mo ring maiinit na pandikit ang Pro Micro at RTC Clock sa lugar din, at pagkatapos ay ikonekta ang extension ng USB sa Pro Micro.

Gumamit ako ng isang micro USB extension upang ang a) ang USB ay maaaring magamit upang magbigay ng lakas, ngunit higit pa, b) upang posible na muling pagprogram ang Pro Micro kung kinakailangan nang hindi hinihila ang lahat

Kapag masaya, i-tornilyo ang kaso nang magkasama gamit ang 4 na mga turnilyo

Hakbang 4: Ang mga Plug

Ang Plugs!
Ang Plugs!
Ang Plugs!
Ang Plugs!
Ang Plugs!
Ang Plugs!

Ang paraan ng paggana nito, iyon ay, para sa lahat ng hangarin at hangarin, ang bahagi ng disenyo ay gumagana bilang isang "ohmmeter". Ang isang ohmmeter ay isang instrumento para sa pagsukat ng resistensya sa elektrisidad. Karamihan sa mga Multimeter ay may ganitong pagpapaandar kung saan pipiliin mo ang sukat at pagkatapos ay sukatin ang isang risistor upang makita ang halaga nito. Ang nagtatrabaho punong-guro ay kumonekta ka sa isang kilalang resistor sa + ve, na kung saan ay konektado sa isang hindi kilalang risistor, na kumokonekta sa -ve. Ang magkasanib na pagitan ng 2 resistors ay kumokonekta sa Arduino analog pin upang mabasa nito ang boltahe at kalkulahin ang paglaban.

Gumagana ito tulad ng isang divider ng boltahe at kinakalkula ang paglaban ng hindi kilalang risistor.

Bilang isang boltahe divider network ng resistors R1 at R2, Vout = Vin * R2 / (R1 + R2) - Gumagamit kami ng 100k para sa aming kilalang resistor (R1). Binibigyan tayo nito ng "boltahe na drop"

Mula dito, maaari na nating magawa ang paglaban ng hindi kilalang resistor (R2), R2 = Vout * R1 / (Vin - Vout) - kung saan ang R1 ang aming 100k (100, 000 ohm) risistor

Sa pamamagitan ng paggamit ng isang iba't ibang risistor sa bawat plug jack na nais mong gamitin, maaari mong ayusin ang code nang naaayon depende sa jack na ginagamit.

Gumagamit ako ng 4 jack plugs. Pinili kong gamitin ang:

Kilalang Resistor (x4) - 100k

Jack Plug 1 - 5.6k

Jack Plug 2 - 10k

Jack Plug 3 - 22k

Jack Plug 4 - 39k

Maaari mo syempre palawakin ito, at mai-code sa gusto mo.

Hakbang 5: Ang Code

Ang Code
Ang Code

Una, kakailanganin mo ang Arduino IDE, magagamit mula dito:

Kakailanganin mo ring tiyakin na mayroon kang ilang Arduino Library din:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (Opsyonal):

Isang tala tungkol sa pagpili ng tamang board na "Arduino". Orihinal na sinimulan ko ang proyektong ito sa isang Arduino Nano, sapagkat ang mga ito ay napakamura sa halos £ 3- £ 4 sa UK, o kasing liit ng £ 1.50 kung bibili ka mula sa AliExpress (ngunit huwag isipin ang paghihintay ng 30-50 araw). Ang problema sa Nano ay ang SRAM na ito ay 2 KB (2048 bytes). Gumagamit ang sketch na ito ng 1728 bytes ng pabago-bagong memorya sa mga Global Variable. 84% iyon ng SRAM, na nag-iiwan lamang ng 320 bytes na libre para sa mga lokal na variable. Ito ay hindi sapat at magiging sanhi ng pag-lock at pag-freeze ng Nano.

Ang Pro Micro (Leonardo) ay may 2.5K SRAM (2560 bytes), na nangangahulugang mayroong libreng 694 bytes para sa mga lokal na variable (Gumagamit ang sketch ng 72% ng SRAM ng Pro Micro). Sa ngayon ito ay napatunayan na perpektong sapat at matatag para sa aking paggamit. Kung balak mong gumamit ng maraming mga jack plugs, maaaring gusto mong isaalang-alang ang paggamit ng isang bagay na may higit pang SRAM.

Hinggil sa pag-aalala sa Flash, ang sketch na ito ay gumagamit ng 88% (25252 bytes) na 30k (Ang ATMega328p [Nano] at ATMega32u4 [Pro Micro] parehong may 32k, ngunit ang 2k ay nakalaan para sa bootloader)

Nagsulat ako ng daan-daang mga sketch ng Arduino sa mga nakaraang taon, ngunit ako ay isang libangan - kaya tandaan na ang ilang mga bahagi ng code ay maaaring hindi mabisa o maaaring may mga "mas mahusay na paraan ng paggawa nito" ng mga sitwasyon. Sinabi na, gumagana ito ng perpekto para sa akin at masaya ako kasama nito. Gumamit ako ng mga silid-aklatan na DAPAT gumana sa karamihan sa mga board, kung ito ay AVR (pinaka pangunahing Arduino's) o SAMD21 (Mayroon akong isang maliit na mga aparato ng Cortex M0)

Nais kong ipakita ang ibang graphic batay sa jack na ginamit din. Kung nais mong gumawa ng iyong sarili, ito ay isang napakatalino simpleng gabay sa kung paano lumikha ng C Array para sa mga imaheng gagamitin sa display na ito:

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

Tiyaking gumamit ng PROGMEM para sa iyong graphics. Hal:

static Const unsigned char MY_IMAGE_NAME PROGMEM = {}

Sa pamamagitan ng disenyo, ang screen ay "timeout" pagkatapos ng 5 segundo at ibalik sa pagpapakita ng oras.

Karamihan sa Mga Setting ay matatagpuan sa Mga Setting.h, partikular, ang pangalan ng mga nauugnay na jack plugs ay naka-code dito:

#define PLUG1 "KEYS"

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

Mayroon ding ilang mahahalagang bahagi ng code sa loob ng Mga Variable.h

float R1 = 96700.0;

float R2 = 96300.0; float R3 = 96500.0; float R4 = 96300.0;

Ito ang mga ALAM na halaga ng paglaban, sa mga ohm, ng bawat isa sa 4 na resistors.

Ang R1 ay konektado sa A0, R2 sa A1, R3 sa A2, at R4 sa A3.

Maipapayo na sukatin ang iyong 100k resistors gamit ang isang multimeter at gamitin ang eksaktong halaga ng risistor. Gawin ang pagsukat ng risistor sa sandaling ang lahat ay konektado. (Ngunit hindi pinapagana).

Kapag pumipili ng mga resistors para sa iyong mga jack plugs, tiyaking mayroong isang mahusay na puwang ng ohm sa pagitan nila, at kapag naka-coding ang mga ito, bigyan ang iyong sarili ng isang magandang saklaw na mas mababa at mas mataas kaysa sa iyong napiling risistor. Narito ang ginamit ko sa aking code:

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

lumutang 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

Ang dahilan para dito ay ang account para sa pagbasa ng analog at ang mga pagbawas ng menor de edad na boltahe atbp

Kaya kung ano ang mangyayari ay, kung ang napansin na paglaban ay nasa pagitan ng 4000 ohm at 7000 ohm, ipinapalagay namin na gumamit ka ng isang 5.6k risistor at sa gayon makikita ito ng code bilang Jack Plug 1. Kung ang sinusukat na pagtutol ay nasa pagitan ng 8000 ohms at 12000 ohms, ang palagay ay isang 10k risistor at ito ay Jack Plug 2 at iba pa.

Kung kailangan mong gumawa ng ilang pag-debug (Huwag iwanan ang hindi komportable sa 'produksyon' dahil ang serial debugging ay gumagamit ng mahalagang ram) na simpleng pag-aaliw ng mga linya na kailangan mo sa tuktok ng Mga Setting.h

// # tukuyin ang SERIAL_DEBUG

// # tukuyin ang WAIT_FOR_SERIAL

Upang mag-kompromiso, simpleng alisin ang // …. upang bigyan ng puna ang linya, idagdag muli ang // sa harap ng linya.

Pinapayagan ng SERIAL_DEBUG ang serial debugging at ang paggamit ng mga bagay tulad ng (halimbawa)

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

Ang WAIT_FOR_SERIAL ay isang karagdagang hakbang, nangangahulugan iyon, hanggang sa buksan mo ang Serial Monitor, hindi magpapatuloy ang code. Tinutulungan nitong matiyak na hindi mo makaligtaan ang anumang mahahalagang serial message. - HINDI KA NAIWAN SA ITONG NAGING ENABLED

Kung iiwan mong pinagana ang WAIT_FOR_SERIAL, hindi mo magagamit ang iyong pangunahing may-ari sa anumang "totoong mundo" na kapaligiran dahil ma-stuck ito naghihintay para sa Arduino IDE Serial monitor bago ito magpatuloy sa pangunahing loop ng sketch. Sa sandaling nakumpleto mo ang iyong pag-debug, tiyaking hindi mo na muling naaayos ang linyang ito, at muling i-upload ang iyong sketch para sa paggawa / pagkumpleto.

Kapag ginagamit ang pagpipiliang SERIAL_DEBUG, naglalaman ang aking code ng sumusunod:

#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]); para sa (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 (); kung (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Serial.print (socket + 1); Serial.print (F ("may resitance ng:")); Serial.println (paglaban); } #tapusin kung

Sasabihin sa iyo ng huling linya ng Serial.print kung ano ang paglaban, sa ohms, ng huling nakapasok na jack. Kaya maaari mo ring gamitin ang sketch na ito bilang isang ohmmeter ng mga uri upang suriin ang paglaban ng isang jack plug.

Hakbang 6: Mga Tala

Sa palagay ko sakop ko na ang lahat, ngunit mangyaring magbigay ng puna at gagawin ko ang aking makakaya upang mabasa at tumugon kapag nagagawa ko:)

Humihingi ng paumanhin para sa medyo mahirap na video - Wala akong tripod, recoding setup o isang tamang puwang sa pagtatrabaho upang magsalita kaya't kinunan ito (masama) na hawak ang telepono sa isang kamay at sinusubukang i-demo ito sa iba pa.

Salamat sa pagbabasa.

Inirerekumendang: