Բովանդակություն:

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

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

Video: Arduino Guitar Jack Key Key Holder With Jack Recognition & OLED: 7 Steps
Video: How to Quickly Detect Motherboard Short Circuit with the Rosin Dispenser #Shorts 2024, Հուլիսի
Anonim
Image
Image
Arduino կիթառի Jack Key Holder With Jack Recognition & OLED
Arduino կիթառի Jack Key Holder With Jack Recognition & OLED

Ներածություն:

Այս հրահանգը մանրամասն կներկայացնի Arduino- ի վրա հիմնված Guitar Jack plugin ստեղնը

Սա իմ առաջին հրահանգն է, այնպես որ խնդրում եմ համբերեք ինձ, քանի որ ես կարող եմ փոփոխություններ / թարմացումներ կատարել ճանապարհին

Քայլ 1: Մասեր և գործիքներ

Մասեր և գործիքներ
Մասեր և գործիքներ
Մասեր և գործիքներ
Մասեր և գործիքներ
Մասեր և գործիքներ
Մասեր և գործիքներ

Մասերի մեծ մասը, որոնք ես գնել եմ Amazon.co.uk- ից կամ eBay- ից, ոմանք արդեն հասցրել էի ոտքով հարվածել: Ահա այն ցանկը, ինչ ձեզ հարկավոր կլինի:

Amazon- ի հղումները բոլորը Affiliate- ի հղումներ են, հնարավոր է, որ դուք կարողանաք ավելի էժան գտնել այլուր.

Ես ուզում էի այս շինությունը պահել բավականին էժան և բյուջետային: Soանկության դեպքում կարող եք օգտագործել ավելի մեծ TFT էկրան, ինչպես նաև այլ Arduino: Մի օգտագործեք NANO, քանի որ այն կործանվի հիշողության բարձր օգտագործման պատճառով: Կոդն օգտագործում է Pro Micro- ի RAM- ի մոտ 72% -ը և կայուն է, սակայն փորձարկումից NANO- ն կփլուզվի և կսառչի:

(Ավելի մանրամասն ՝ օրենսգրքի քայլում):

ՄԱՍՆԵՐ

1x Arduino Pro Micro -

1x 0.96 OLED դեղին և կապույտ էկրանով -

4x WS2812 «պիքսելներ» -

1x DS3231 RTC -

4x 1/4 Mono Jack (Կամ այնքան, որքան ցանկանում եք) - Amazon (ոսկի) կամ Amazon (արծաթ) կամ eBay.co.uk

1x Mixed Resistor Pack -

4x 1/4 կիթառի խցիկներ -

1x Micro USB մալուխի երկարացման մալուխ -

4x M3 պտուտակներ

Գործիքներ և նյութեր

- oldոդման երկաթ (սա այն է, ինչ ես գնել եմ `TS100 - քանի որ այն գալիս էր լրացուցիչ խորհուրդներով

- erոդող

- տաք սոսինձ ատրճանակ (https://amzn.to/2UTd9PN)

- Լար (https://amzn.to/2VK2ILU)

- Մետաղալարեր/մերկացուցիչներ (https://amzn.to/2KzqUzp)

- 3D տպիչ կամ 3D տպագրության ծառայություն

ԸՆՏՐՈԹՅՈՆ - Այս տարրերն ընտրովի են ՝ կախված նրանից, թե ինչպես եք ընտրում ամեն ինչ միացնել

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

- Պտուտակային տերմինալային միակցիչներ (2 բևեռ | 3 բևեռ | 4 բևեռ)

- PCB վերնագրեր (https://amzn.to/2X7RjWf)

Քայլ 2: Պատյան 3D տպագրություն

Գործի 3D տպագրություն
Գործի 3D տպագրություն
Գործի 3D տպագրություն
Գործի 3D տպագրություն
Գործի 3D տպագրություն
Գործի 3D տպագրություն
Գործի 3D տպագրություն
Գործի 3D տպագրություն

Ես իմը տպել եմ իմ Creality CR-10S- ով ՝ օգտագործելով Black PLA+ (https://amzn.to/2X2SDtE)

Ես տպել եմ 0,2 շերտի բարձրության վրա, 25% լցվածով:

Քայլ 3: Ամեն ինչ միասին դնել + սխեմատիկ

Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ
Այս ամենը միասին դնելը + սխեմատիկ

Ինչպես եք ընտրում ձեր Arduino- ն միացնելը, լիովին ձեզնից է կախված: Ես անձամբ ընտրեցի ինձ, այսպես ասած, «վահան» դարձնել: Վահանը պատրաստելու համար ես կանացի վերնագրերը կպցրել եմ veroboard- ին ՝ Pro Micro- ին համապատասխանելու համար, այնուհետև ես ավելացրել եմ +5v և GND ռելսեր ՝ հակառակ ծայրերում: Ես օգտագործել եմ jumper մետաղալար ` +5v- ն իմ այժմյան 5v 'երկաթուղուն միացնելու համար, և նույնն արել եմ GND- ի համար: Այնուհետև ես ավելացրեցի իմ 4x 100k դիմադրիչները, որոնց մի ծայրը բոլորի համար միացված էր +5v- ին, իսկ մյուս կողմը համապատասխանաբար միանում է A0, A1, A2 և A3- ին: Այնուհետև ես ավելացրել եմ պտուտակային տերմինալներ անալոգային կապերի A0, A1, A2 և A3, ինչպես նաև կապում 2 (SDA), 3 (SCL) և 4

Չափեք ձեր էլեկտրագծերը և կտրեք համապատասխան երկարությունների: Սկսեցի WS2812 Pixel LED- երից `ԱՌԱԻՆ WS2812 LED- ը միանում է Arduino- ից +5v- ին, Arduino- ից GND- ին, իսկ DIN- ը կապում է Pin 4 -ին: Դրանից հետո մնացած 3 -ը շղթայված են միասին ՝ շղթայելով բոլոր 5v> 5v- ին, GND> GND կապում և մեկ Pixel- ից DOUT, միանում է հաջորդի DIN- ին: Soldոդվելուց հետո դրանք նրբորեն սեղմեք վերևի քառակուսի անցքերի մեջ, իսկ տեղում տաք սոսինձ պահեք, ինչպես նաև հետույքը պատահական միացումներից կամ շորտերից պաշտպանելու համար:

LED- ներից հետո ես պտուտակեցի Guitar Jack վարդակները: Յուրաքանչյուրի մի կապը միանում է GND- ին, այնուհետև յուրաքանչյուրի 2 -րդ կապը համապատասխանաբար միանում է A0, A1, A2 & A3- ին: Այսպիսով, դա Socket 1, A0, Socket 2 A1, Socket 3 A2 և Socket 4 դեպի A3:

Հաջորդը ես 4 լար լարեցի OLED միացումներին և հնարավորինս կտրեցի ցանկացած ավելորդ զոդ: Դուք ցանկանում եք ձեր լարերը կցել էկրանի հետևից, այնպես որ դուք կպչում եք էկրանի առջևի մասին:

Ուշադրություն դարձրեք քորոցներին: Որոշ OLED- ներ ունեն GND դրսից, այնուհետև VCC, ոմանք ունեն VCC դրսից, այնուհետև GND

Soldոդումից հետո, որքան հնարավոր է կտրեք կամ հարթեցրեք զոդման միացումը, նրբորեն սեղմեք էկրանը դրա գտնվելու վայրի վրա: Դիզայնով դա մի փոքր խստորեն տեղավորվում է, բայց տեղյակ եղեք, որ տպագրության տարբեր հանդուրժողականությունները կարող են ազդել դրա վրա, ուստի գուցե ստիպված լինեք մի փոքր հետամշակում կատարել `այն համապատասխանեցնելու համար: Տեղ հասնելուց հետո 4 անկյուններից յուրաքանչյուրում տեղադրեք տաք սոսինձ `այն տեղում պահելու համար:

Միացրեք ամեն ինչ ՝ սխեմատիկին և նկարներին համապատասխանելու համար, իսկ ուրախանալուց հետո կարող եք տեղում տաք սոսնձել նաև Pro Micro և RTC ժամացույցները, այնուհետև USB երկարաձգումը միացրեք Pro Micro- ին:

Ես օգտագործեցի միկրո USB ընդլայնում, որպեսզի ա) USB- ը կարող է օգտագործվել էներգիա ապահովելու համար, բայց ավելին ՝ բ) այնպես, որ անհրաժեշտության դեպքում հնարավոր լինի վերախմբագրել Pro Micro- ն ՝ առանց ամեն ինչ իրարից հեռացնելու

Ուրախ լինելուց հետո գործը միացրեք 4 պտուտակով

Քայլ 4: Խրոցակներ:

Խրոցակներ!
Խրոցակներ!
Խրոցակներ!
Խրոցակներ!
Խրոցակներ!
Խրոցակներ!

Ինչպես է դա աշխատում, այն է, որ բոլոր նպատակների համար դիզայնի մի մասը գործում է որպես «օմմետր»: Օմմետրը էլեկտրական դիմադրության չափման գործիք է: Բազմաչափերի մեծամասնությունն ունի այս գործառույթը, որով դուք ընտրում եք սանդղակը, այնուհետև չափում եք ռեզիստորը `դրա արժեքը գտնելու համար: Գործող սկզբունքն այն է, որ դուք միացնում եք ՀԱՅՏՆԻ ռեզիստորը +ve- ին, որն այնուհետև միացված է ԱՆՀԱՅՏ ռեզիստորին, որը միանում է -ve- ին: 2 դիմադրիչների միջև միացումը միանում է Arduino անալոգային քորոցին, որպեսզի կարողանա կարդալ լարումը և հաշվարկել դիմադրությունը:

Այն աշխատում է լարման բաժանարարի պես և հաշվարկում անհայտ ռեզիստորի դիմադրությունը:

Որպես դիմադրության R1 և R2 լարման բաժանարար ցանց, Vout = Vin * R2 / (R1 + R2) - Մենք օգտագործում ենք 100k մեր հայտնի (R1) դիմադրության համար: Սա մեզ տալիս է «լարման անկում»

Այստեղից մենք այժմ կարող ենք մշակել անհայտ (R2) դիմադրության դիմադրությունը, R2 = Vout * R1 / (Vin - Vout) - որտեղ R1- ը մեր 100k (100, 000 ohm) դիմադրողն է

Օգտագործելով տարբեր ռեզիստոր յուրաքանչյուր վարդակից, որը ցանկանում եք օգտագործել, այնուհետև կարող եք համապատասխանաբար կարգավորել ծածկագիրը ՝ կախված օգտագործվող բույնից:

Ես օգտագործում եմ 4 վարդակ: Ես նախընտրեցի օգտագործել

Հայտնի դիմադրություն (x4) - 100k

Jack Plug 1 - 5.6k

Jack Plug 2 - 10k

Jack Plug 3 - 22k

Jack Plug 4 - 39k

Դուք, իհարկե, կարող եք ընդլայնել սա և կոդավորել այնքան, որքան ցանկանում եք:

Քայլ 5: Կոդ

Օրենսգիրքը
Օրենսգիրքը

Նախ, ձեզ հարկավոր կլինի Arduino IDE, որը հասանելի է այստեղից ՝

Դուք նաև պետք է համոզվեք, որ ունեք նաև Arduino գրադարաններ.

Adafruit NeoPixel ՝

u8g2:

Adafruit RTCLib ՝

Adafruit SleepyDog (ըստ ցանկության) ՝

Նշում «Arduino» ճիշտ տախտակ ընտրելու մասին: Սկզբնապես ես սկսեցի այս նախագիծը Arduino Nano- ի միջոցով, քանի որ դրանք սուպեր էժան են մոտ 3–4 ֆունտ ստեռլինգով Մեծ Բրիտանիայում, կամ ընդամենը 1,50 ֆունտ ստերլինգ, եթե գնում եք AliExpress– ից (բայց դեմ չեք 30-50 օր սպասելուն): Nano- ի խնդիրն այն է, որ դրա SRAM- ը 2 ԿԲ է (2048 բայթ): Այս ուրվագիծը օգտագործում է 1728 բայթ դինամիկ հիշողություն Գլոբալ փոփոխականներով: Դա SRAM- ի 84% -ն է, իսկ տեղական փոփոխականների համար թողնում է ընդամենը 320 բայթ: Սա անբավարար էր և կհանգեցներ, որ Նանոն փակվի և սառչի:

Pro Micro- ն (Լեոնարդո) ունի 2.5K SRAM (2560 բայթ), ինչը նշանակում է, որ տեղական փոփոխականների համար կա 694 բայթ անվճար (էսքիզը օգտագործում է Pro Micro- ի SRAM- ի 72% -ը): Առայժմ դա լիովին համարժեք և կայուն էր իմ օգտագործման համար: Եթե դուք մտադիր եք օգտագործել բազմաթիվ վարդակներ, ապա կարող եք ցանկություն ունենալ ավելի շատ SRAM- ով ինչ -որ բան օգտագործել:

Ինչ վերաբերում է Flash- ի պահպանմանը, այս ուրվագիծը օգտագործում է 30k- ի 88% -ը (25252 բայթ) (ATMega328p [Nano] և ATMega32u4 [Pro Micro] երկուսն էլ ունեն 32k, բայց 2k- ը վերապահված է բեռնիչին)

Տարիների ընթացքում ես գրել եմ Arduino- ի էսքիզներ, բայց ես հոբբի եմ, ուստի հիշեք, որ կոդի որոշ հատվածներ կարող են անարդյունավետ լինել, կամ կարող են լինել «դա անելու ավելի լավ եղանակներ» սցենարներ: Ասածս այն է, որ այն ինձ մոտ հիանալի է աշխատում և ես գոհ եմ դրանից: Ես օգտագործել եմ գրադարաններ, որոնք ՊԵՏՔ է աշխատեն տախտակների մեծ մասի վրա ՝ լինի դա AVR (առավել հիմնական Arduino's), թե SAMD21 (ես ունեմ մի բուռ Cortex M0 սարք)

Ես ուզում էի ցուցադրել այլ գրաֆիկա ՝ հիմնված օգտագործվող խցիկի վրա նույնպես: Եթե ցանկանում եք ինքներդ պատրաստել, սա հիանալի պարզ ուղեցույց է, թե ինչպես ստեղծել C զանգված, որպեսզի պատկերները օգտագործվեն այս ցուցադրման միջոցով.

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

Համոզվեք, որ PROGMEM- ը օգտագործեք ձեր գրաֆիկայի համար: Օրինակ ՝

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Ըստ նախագծման, էկրանը «լրանում է ժամանակը» 5 վայրկյանից հետո և կվերադառնա ժամանակի ցուցադրմանը:

Կարգավորումների մեծ մասը կարելի է գտնել Settings.h- ում, մասնավորապես, հարակից վարդակների անունները կոդավորված են այստեղ ՝

#սահմանեք PLUG1 «ԲԱՅՆԵՐ»

#սահմանեք PLUG2 «P2» #սահմանեք PLUG3 «P3» #սահմանեք PLUG4 «P4» #սահմանեք ԸՆԴՀԱՆՈՐ «Ա NA»

Variables.h- ի ներսում կան նաև կոդի որոշ կարևոր մասեր

բոց R1 = 96700.0;

բոց R2 = 96300.0; բոց R3 = 96500.0; բոց R4 = 96300.0;

Սրանք են դիմադրության ԳԻՏԵԼԻ արժեքները, օմ -ով, 4 դիմադրողներից յուրաքանչյուրի համար:

R1- ը միացված է A0- ին, R2- ին `A1- ին, R3- ին` A2- ին, իսկ R4- ին `A3- ին:

Advisանկալի է չափել ձեր 100k դիմադրիչները ՝ օգտագործելով բազմիմետր և օգտագործել դիմադրության ճշգրիտ արժեքը: Վերցրեք դիմադրության չափումը, երբ ամեն ինչ միացված է: (Բայց միացված չէ):

Մալուխների համար ռեզիստորներ ընտրելիս համոզվեք, որ դրանց միջև լավ օհմ բաց կա, և դրանք կոդավորելիս տվեք ինքներդ ձեզ ավելի լավ և ցածր տիրույթ, քան ձեր ընտրած ռեզիստորը: Ահա այն, ինչ ես օգտագործել եմ իմ ծածկագրում.

բոց P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6 Կ

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

Դրա պատճառն անալոգային ընթերցման և լարման աննշան տատանումների և այլնի հաշվառումն է

Այսպիսով, ինչ է տեղի ունենում, եթե հայտնաբերված դիմադրությունը 4000 ohms- ից 7000 ohms- ի միջև է, մենք ենթադրում ենք, որ դուք օգտագործել եք 5.6k ռեզիստոր և, հետևաբար, ծածկագիրը դա կտեսնի որպես Jack Plug 1. Եթե չափված դիմադրությունը 8000 ohms- ի միջև է 12000 ohms, ենթադրությունն այն է, որ դա 10k դիմադրություն է և Jack Plug 2 է և այլն:

Եթե Ձեզ անհրաժեշտ է կարգաբերում կատարել (Մի թողեք «մեկնաբանության մեջ« արտադրության մեջ »քանի որ սերիական վրիպազերծումը օգտագործում է թանկարժեք խոյ), պարզապես մեկնաբանությունների համար նշեք ձեր պահանջվող տողերը Կարգավորումների վերևում:

//#սահմանել SERIAL_DEBUG

//#սահմանել WAIT_FOR_SERIAL

Մեկնաբանելու համար պարզապես հեռացրեք //… տողը հետադարձ մեկնաբանելու համար նորից // ավելացրեք // տողի առջևի մասում:

SERIAL_DEBUG- ը հնարավորություն է տալիս սերիական կարգաբերում և այնպիսի բաների օգտագործում, ինչպիսիք են (օրինակ)

Serial.println (F («բարև աշխարհ»));

WAIT_FOR_SERIAL- ը լրացուցիչ քայլ է, ինչը նշանակում է, որ մինչև սերիական մոնիտորը չբացեք, ծածկագիրը չի շարունակվի: Սա օգնում է ապահովել, որ բաց չթողնեք որևէ կարևոր սերիական հաղորդագրություն: - ԵՐԲԵՔ ԹՈ LՅԼ ՉԵՆՔ ԱՅՍ ԱՌԱԱՐԿՎԱ

Եթե WAIT_FOR_SERIAL- ը միացված թողնեք, ապա չեք կարողանա ձեր բանալին օգտագործել «իրական աշխարհում» որևէ միջավայրում, քանի որ այն չի կարող սպասել Arduino IDE սերիական մոնիտորին, մինչև այն կարողանա շարունակել ուրվագծի հիմնական օղակը: Ձեր վրիպազերծումն ավարտելուց հետո համոզվեք, որ այս տողում նորից մեկնաբանություն եք թողնում և վերբեռնում եք ձեր ուրվագիծը արտադրության/ավարտի համար:

SERIAL_DEBUG տարբերակը օգտագործելիս իմ կոդը պարունակում է հետևյալը.

#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]); (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 (վարդակից+1); Serial.print (F ("ունի resitance:")); Serial.println (դիմադրություն); } #endif

Վերջին Serial.print տողը ձեզ կասի, թե որն է դիմադրությունը, օհմերում, վերջին տեղադրված խցիկի նկատմամբ: Այսպիսով, դուք կարող եք նաև օգտագործել այս ուրվագիծը ՝ որպես օմմետր ՝ ճարմանդ խրոցակի դիմադրությունը ստուգելու համար:

Քայլ 6: Նշումներ

Կարծում եմ, որ ես լուսաբանել եմ ամեն ինչ, բայց խնդրում եմ մեկնաբանել, և ես ամեն ինչ կանեմ, երբ կարողանամ կարդալ և պատասխանել:)

Ներողություն եմ խնդրում ինչ -որ չափով վատ տեսաերիզի համար. Ես եռոտանի, վերակոդավորման տեղադրման կամ, այսպես ասած, համապատասխան աշխատանքային տարածք չունեմ, այնպես որ սա նկարահանվել է (վատ) հեռախոսը մի ձեռքում պահելով և մյուսով փորձելով ցուցադրել այն:

Շնորհակալություն կարդալու համար:

Խորհուրդ ենք տալիս: