Orodha ya maudhui:

Arduino Guitar Jack Holder muhimu na Jack Recognition & OLED: Hatua 7
Arduino Guitar Jack Holder muhimu na Jack Recognition & OLED: Hatua 7

Video: Arduino Guitar Jack Holder muhimu na Jack Recognition & OLED: Hatua 7

Video: Arduino Guitar Jack Holder muhimu na Jack Recognition & OLED: Hatua 7
Video: Arduino Guitar Jack Key Holder with Jack Recognition & OLED 2024, Novemba
Anonim
Image
Image
Arduino Guitar Jack Holder muhimu na Jack Recognition & OLED
Arduino Guitar Jack Holder muhimu na Jack Recognition & OLED

Utangulizi:

Hii inaweza kufundishwa kwa undani juu ya mmiliki wa kitufe cha msingi cha Guitar Jack

Hii ni mara yangu ya kwanza kufundishwa kwa hivyo tafadhali nivumilie kwani naweza kufanya mabadiliko / sasisho njiani

Hatua ya 1: Sehemu na Zana

Sehemu na Zana
Sehemu na Zana
Sehemu na Zana
Sehemu na Zana
Sehemu na Zana
Sehemu na Zana

Sehemu nyingi nilizonunua kutoka Amazon.co.uk au eBay, zingine nilikuwa nikipiga teke tayari - Hapa kuna orodha ya kile utahitaji.

Viungo vya Amazon ni viungo vyote vya Ushirika, unaweza kupata nafuu mahali pengine - ninatumia Amazon Prime sana, kwa hivyo Amazon ilitokea tu kuwa mtu wangu wa kwenda.

Nilitaka kuweka ujengaji huu kwa gharama nafuu na bajeti. Unaweza kutumia skrini kubwa ya TFT unapenda sana, na Arduino tofauti. Usitumie NANO, kwani itaanguka kwa sababu ya utumiaji mkubwa wa kumbukumbu. Nambari hutumia karibu 72% ya RAM ya Pro Micro na ni thabiti, lakini kutoka kwa upimaji, NANO itaanguka na kufungia.

(Maelezo zaidi katika hatua ya Kanuni.)

SEHEMU

1x Arduino Pro Micro -

1x 0.96 OLED na Uonyesho wa Njano na Bluu -

4x WS2812 'Saizi' -

1x DS3231 RTC -

4x 1/4 Mono Jack (Au nyingi utakavyo) - Amazon (Dhahabu) au Amazon (Fedha) au eBay.co.uk

Ufungashaji wa Mchanganyiko wa Mchanganyiko wa 1x -

4x 1/4 Guitar Jacks -

Cable ya Kiendelezi cha Cable ya USB Micro -

Screws 4x M3

VITUO NA VIFAA

- Chuma cha Soldering (Hii ndio niliyonunua - TS100 - kama ilivyokuja na vidokezo vya ziada

- Solder

- Bunduki ya Gundi Moto (https://amzn.to/2UTd9PN)

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

- Wakataji waya / viboko (https://amzn.to/2KzqUzp)

- Printa ya 3D au huduma ya Uchapishaji wa 3D

Hiari - Vitu hivi ni vya hiari, kulingana na jinsi unavyochagua kuunganisha kila kitu

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

- Screw Terminal Viunganishi (2 Pole | 3 Pole | 4 Pole)

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

Hatua ya 2: Uchapishaji wa 3D Uchunguzi

Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo
Uchapishaji wa 3D Kesi hiyo

Nilichapisha yangu kwenye Creality CR-10S yangu, nikitumia Black PLA + (https://amzn.to/2X2SDtE)

Nilichapisha kwa urefu wa safu 0.2, na ujazo wa 25%.

Hatua ya 3: Kuiweka Pamoja + Kimkakati

Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati
Kuweka Pamoja Pamoja + Kimkakati

Jinsi unavyochagua kuunganisha Arduino yako ni juu yako kabisa - mimi mwenyewe nilichagua kujifanya "ngao" kwa kusema. Ili kutengeneza ngao, nimeuza vichwa vya kike kwa veroboard ili kufanana na Pro Micro, kisha nikaongeza reli ya + 5v na GND, katika ncha tofauti. Nimetumia waya ya kuruka kuungana na + 5v kwa 'reli' yangu ya sasa ya 5v, na nilifanya vivyo hivyo kwa GND. Kisha nikaongeza vipinzani vyangu vya 4x 100k, mwisho mmoja umeunganishwa na + 5v kwa wote, na kisha upande mwingine unaunganisha kwa A0, A1, A2 & A3 mtawaliwa. Nimeongeza vituo vya screw kwenye pini za Analog A0, A1, A2 & A3 na pia Pini 2 (SDA), 3 (SCL) & 4

Pima wiring yako na ukate kwa urefu unaofaa. Nilianza na WS2812 Pixel LEDs kwanza - LED ya KWANZA ya WS2812 inaunganisha na + 5v kutoka Arduino, GND kutoka Arduino, na DIN inaunganisha kwa Pin 4. Baada ya hii, 3 zilizobaki zimefungwa kwa minyororo, zikifunga 5v zote> 5v, Pini za GND> GND na DOUT kutoka kwa Pixel moja, inaunganisha na DIN ya inayofuata. Mara baada ya kuuzwa, Bonyeza hizi kwa upole kwenye mashimo ya mraba juu, na gundi moto mahali na pia kulinda nyuma kutoka kwa unganisho wowote wa kifupi au kaptula.

Baada ya taa za taa, niligonga kwenye Soketi za Gitaa. Pini moja ya kila moja inaunganisha na GND, na kisha pini ya 2 ya kila moja inaunganisha kwa A0, A1, A2 & A3 ipasavyo. Kwa hivyo hiyo ni Tundu 1, hadi A0, Soketi 2 hadi A1, Soketi 3 hadi A2, na Soketi 4 hadi A3.

Ifuatayo niliuza waya 4 kwa miunganisho ya OLED, na nikapunguza solder yoyote ya ziada iwezekanavyo. Unataka kushikamana na waya zako kutoka nyuma ya skrini, kwa hivyo unaunganisha mbele ya skrini.

Makini na pini! Baadhi ya OLED zina GND kwa nje, halafu VCC, zingine zina VCC nje, na kisha GND

Mara baada ya kuuzwa na umepunguza au kubana unganisho la solder iwezekanavyo, bonyeza kwa upole skrini kwenye eneo lake. Ni sawa sana na muundo, lakini fahamu kuwa uvumilivu tofauti wa kuchapisha unaweza kuathiri hii na kwa hivyo huenda ukalazimika kufanya usindikaji mdogo baada ya kuifanya iwe sawa. Mara tu mahali, weka gundi moto kwenye kila pembe nne ili kuishikilia.

Unganisha kila kitu hadi ulingane na Picha na picha, na ukiwa na furaha, unaweza gundi moto Pro Pro na RTC Clock mahali pia, halafu unganisha ugani wa USB na Pro Micro.

Nilitumia ugani mdogo wa USB ili a) USB itumike kutoa nguvu, lakini zaidi, b) ili iweze kurahisisha Pro Micro ikiwa inahitajika bila kuvuta kila kitu

Mara baada ya kufurahi, songa kesi hiyo pamoja kwa kutumia screws 4

Hatua ya 4: Vifurushi

Viziba!
Viziba!
Viziba!
Viziba!
Viziba!
Viziba!

Njia ambayo hii inafanya kazi, ni kwamba, kwa makusudi yote, sehemu ya muundo inafanya kazi kama "ohmmeter". Ohmmeter ni chombo cha kupima upinzani wa umeme. Multimeter nyingi zina kazi hii ambayo unachagua kiwango na kisha kupima kontena ili kupata thamani yake. Mkuu wa kazi ni kwamba uunganishe kontena linalojulikana kwa + ve, ambalo linaunganishwa na kontena lisilojulikana, ambalo linaunganisha -ve. Pamoja kati ya vipinga 2 inaunganisha na pini ya Analog ya Arduino ili iweze kusoma voltage na kuhesabu upinzani.

Inafanya kazi kama mgawanyiko wa voltage na huhesabu upinzani wa kipinga kisichojulikana.

Kama mtandao wa mgawanyiko wa voltage ya resistors R1 na R2, Vout = Vin * R2 / (R1 + R2) - Tunatumia 100k kwa kipingaji chetu kinachojulikana (R1). Hii inatupa "kushuka kwa voltage"

Kutokana na hili, sasa tunaweza kumaliza upinzani wa kipingaji kisichojulikana (R2), R2 = Piga * R1 / (Vin - Vout) - ambapo R1 ni kipinzani chetu cha 100k (100, 000 ohm)

Kwa kutumia kontena tofauti katika kila kiziba unachotaka kutumia, unaweza kurekebisha nambari kulingana na jack inayotumika.

Ninatumia plugs 4 za jack. Nilichagua kutumia:

Mpingaji anayejulikana (x4) - 100k

Jack kuziba 1 - 5.6k

Jack kuziba 2 - 10k

Jack kuziba 3 - 22k

Jack kuziba 4 - 39k

Kwa kweli unaweza kupanua hii, na uweke nambari nyingi kama vile ungependa.

Hatua ya 5: Kanuni

Kanuni
Kanuni

Kwanza, utahitaji Arduino IDE, inayopatikana kutoka hapa:

Utahitaji pia kuhakikisha kuwa una Maktaba kadhaa ya Arduino pia:

NeoPixel ya Adafruit:

u8g2:

Matunda ya RTCLib:

Adafruit SleepyDog (Hiari):

Ujumbe juu ya kuchagua bodi sahihi ya "Arduino". Hapo awali nilianzisha mradi huu na Arduino Nano, kwa sababu ni bei rahisi kwa karibu 3- £ 4 nchini Uingereza, au kidogo kama £ 1.50 ukinunua kutoka AliExpress (lakini usijali kusubiri kwa siku 30-50). Shida na Nano ni kwamba SRAM ni 2 KB (2048 byte). Mchoro huu hutumia kaiti 1728 za kumbukumbu zenye nguvu na Vigeuzi vya Ulimwenguni. Hiyo ni 84% ya SRAM, ikiacha ka 320 tu bure kwa vigeuzi vya kawaida. Hii haikuwa ya kutosha na ingeweza kusababisha Nano kufunga na kufungia.

Pro Micro (Leonardo) ina 2.5K SRAM (2560 byte), ambayo inamaanisha kuna baiti 694 za bure kwa vigeuzi vya ndani (Mchoro hutumia 72% ya ProAM's SRAM). Hadi sasa hii imeonekana kuwa ya kutosha na thabiti kwa matumizi yangu. Ikiwa unakusudia kutumia plugi nyingi za jack, basi unaweza kutaka kufikiria kutumia kitu na SRAM zaidi.

Mbali na kuhifadhi Flash, mchoro huu hutumia 88% (25252 ka) ya 30k (ATMega328p [Nano] na ATMega32u4 [Pro Micro] zote zina 32k, lakini 2k imehifadhiwa kwa bootloader)

Nimeandika mamia ya michoro ya Arduino kwa miaka mingi, lakini mimi ni mpenda hobby - kwa hivyo zingatia sehemu zingine za nambari zinaweza kuwa na ufanisi au kunaweza kuwa na "njia bora za kufanya hii". Hiyo inasemwa, inanifanyia kazi kikamilifu na ninafurahi nayo. Nilitumia maktaba ambayo INAPASWA kufanya kazi kwa bodi nyingi, iwe ni AVR (ya msingi kabisa ya Arduino) au SAMD21 (nina vifaa vichache vya Cortex M0)

Nilitaka kuonyesha picha tofauti kulingana na jack iliyotumiwa pia. Ikiwa unataka kufanya yako mwenyewe, huu ni mwongozo rahisi mzuri wa jinsi ya kuunda safu ya C kwa picha zitakazotumiwa na onyesho hili:

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

Hakikisha kutumia PROGMEM kwa picha zako. Mfano:

tuli st unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Kwa muundo, skrini "itaisha" baada ya sekunde 5 na itarejea kuonyesha wakati.

Mipangilio mingi inaweza kupatikana katika Mipangilio.h, haswa, jina la plugs za jack zinazohusiana zimeorodheshwa hapa:

#fafanua PLUG1 "FUNGUO"

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

Pia kuna sehemu muhimu za nambari ndani ya Vigeuzi.h

kuelea R1 = 96700.0;

kuelea R2 = 96300.0; kuelea R3 = 96500.0; kuelea R4 = 96300.0;

Hizi ni maadili ya upinzani inayojulikana, katika ohms, ya kila moja ya vipinga 4.

R1 imeunganishwa na A0, R2 hadi A1, R3 hadi A2, na R4 hadi A3.

Inashauriwa kupima vipingaji vyako 100k kwa kutumia multimeter na utumie thamani halisi ya kontena. Chukua kipimo cha kipinga mara kila kitu kimeunganishwa. (Lakini haijawashwa).

Wakati wa kuchagua vipingaji vya plugi zako za jack, hakikisha kuna pengo nzuri la ohm kati yao, na unapoweka kificho, jipe anuwai anuwai ya chini na ya juu kuliko kipinga chako ulichochagua. Hivi ndivyo nilivyotumia katika nambari yangu:

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

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

Sababu ya hii ni kuhesabu usomaji wa Analog na kushuka kwa kiwango kidogo cha voltage nk

Kwa hivyo kinachotokea ni, ikiwa upinzani unaogunduliwa ni kati ya 4000 ohms na 7000 ohms, tunafikiria umetumia kontena la 5.6k na kwa hivyo nambari itaona hii kama Jack Plug 1. Ikiwa upinzani uliopimwa ni kati ya ohms 8000 na 12000 ohms, dhana ni kwamba ni kipinzani cha 10k na ni Jack kuziba 2 na kadhalika.

Ikiwa unahitaji kufanya utatuzi (Usiache bila kusumbuliwa katika 'utengenezaji' kwani utatuzi wa serial hutumia kondoo wa thamani) ondoa tu mistari unayohitaji juu ya Mipangilio.

// # fafanua SERIAL_DEBUG

// # fafanua WAIT_FOR_SERIAL

Ili kutosheleza, futa rahisi //…. kutoa maoni nyuma ya mstari, ongeza tena // mbele ya mstari.

SERIAL_DEBUG inawezesha utatuzi wa serial na utumiaji wa vitu kama (kwa mfano)

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

WAIT_FOR_SERIAL ni hatua ya ziada, hiyo inamaanisha, mpaka utakapofungua Monitor Monitor, nambari hiyo haitaendelea. Hii inasaidia kuhakikisha kuwa hukosi ujumbe wowote muhimu wa serial. - KAMWE USIACHE HII ILIWEZESHWA

Ukiondoka WAIT_FOR_SERIAL ikiwa imewezeshwa, hautaweza kutumia kishikiliaji chako muhimu katika mazingira yoyote ya "ulimwengu halisi" kwani itakwama kusubiri mfuatiliaji wa Arduino IDE Serial kabla ya kuendelea kwenye kitanzi kuu cha mchoro. Mara tu ukimaliza utatuzi wako, hakikisha uncomment laini hii tena, na upakia tena mchoro wako kwa uzalishaji / kukamilika.

Unapotumia chaguo la SERIAL_DEBUG, nambari yangu ina zifuatazo:

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = saizi ya (SOCKET_1234_HAS_PLUGTYPE_X) / sizeof (SOCKET_1234_HAS_PLUGTYPE_X [0]); kwa (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Printa ya serial (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); ikiwa (TETESI IMEINGIWA) {Serial.print (F ("Chomeka tundu")); Printa ya serial (tundu + 1); Serial.print (F ("ina resitance ya:")); Serial.println (upinzani); } # mwisho

Mstari wa mwisho wa Serial.print utakuambia upinzani ni nini, katika ohms, ya jack iliyoingizwa mwisho. Kwa hivyo unaweza pia kutumia mchoro huu kama ohmmeter ya aina ili kuangalia upinzani wa kuziba jack.

Hatua ya 6: Vidokezo

Nadhani nimefunika kila kitu, lakini tafadhali toa maoni na nitajitahidi kusoma na kujibu wakati ninaweza:)

Samahani kwa video duni - sina kitatu, kuweka upya usanidi au nafasi inayofaa ya kufanya kazi ili kusema hivyo hii ilipigwa picha (vibaya) kushika simu kwa mkono mmoja na kujaribu kuionesha na nyingine.

Asante kwa kusoma.

Ilipendekeza: