Satura rādītājs:

Arduino ģitāras ligzdas atslēgas turētājs ar domkrata atpazīšanu un OLED: 7 soļi
Arduino ģitāras ligzdas atslēgas turētājs ar domkrata atpazīšanu un OLED: 7 soļi

Video: Arduino ģitāras ligzdas atslēgas turētājs ar domkrata atpazīšanu un OLED: 7 soļi

Video: Arduino ģitāras ligzdas atslēgas turētājs ar domkrata atpazīšanu un OLED: 7 soļi
Video: CS50 2015 - Week 7 2024, Jūlijs
Anonim
Image
Image
Arduino ģitāras ligzdas atslēgas turētājs ar domkrata atpazīšanu un OLED
Arduino ģitāras ligzdas atslēgas turētājs ar domkrata atpazīšanu un OLED

Ievads:

Šī pamācība sīki aprakstīs mana uz Arduino balstītā Guitar Jack spraudņa atslēgas turētāja uzbūvi

Šī ir mana pirmā pamācība, tāpēc, lūdzu, pacietieties, jo es varētu veikt izmaiņas / atjauninājumus

1. darbība: detaļas un rīki

Daļas un rīki
Daļas un rīki
Daļas un rīki
Daļas un rīki
Daļas un rīki
Daļas un rīki

Lielāko daļu detaļu es iegādājos no vietnes Amazon.co.uk vai eBay, dažas man jau bija pieejamas - šeit ir saraksts ar to, kas jums būs nepieciešams.

Amazon saites ir visas saistītās saites, iespējams, citur varēsit atrast lētāk - es daudz izmantoju Amazon Prime, tāpēc Amazon vienkārši bija mans ceļš.

Es gribēju, lai šī konstrukcija būtu diezgan lēta un budžetam draudzīga. Ja vēlaties, varat izmantot lielāku TFT ekrānu, kā arī citu Arduino. Nelietojiet NANO, jo tas avarēs lielas atmiņas izmantošanas dēļ. Kods izmanto aptuveni 72% Pro Micro operatīvās atmiņas un ir stabils, taču pēc pārbaudes NANO avarēs un iesaldēs.

(Sīkāka informācija sadaļā Kods.)

DAĻAS

1x Arduino Pro Micro -

1x 0,96 collu OLED ar dzeltenu un zilu displeju -

4x WS2812 'Pikseļi' -

1x DS3231 RTC -

4x 1/4 Mono Jack (vai tik daudz, cik vēlaties) - Amazon (zelta) vai Amazon (sudraba) vai eBay.co.uk

1x jauktā rezistoru pakete -

4x 1/4 ģitāras domkrati -

1x Micro USB kabeļa pagarinājuma kabelis -

4x M3 skrūves

RĪKI UN MATERIĀLI

- Lodāmurs (šo es nopirku - TS100 - jo tam bija pievienoti papildu padomi

- lodēt

- Karstās līmes pistole (https://amzn.to/2UTd9PN)

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

- Stiepļu griezēji/noņēmēji (https://amzn.to/2KzqUzp)

- 3D printeris vai 3D drukāšanas pakalpojums

IZVĒLES - Šie vienumi nav obligāti, atkarībā no tā, kā izvēlaties visu savienot

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

- Skrūvju spaiļu savienotāji (2 polu | 3 polu | 4 polu)

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

2. darbība: korpusa 3D drukāšana

Korpusa 3D drukāšana
Korpusa 3D drukāšana
Korpusa 3D drukāšana
Korpusa 3D drukāšana
Korpusa 3D drukāšana
Korpusa 3D drukāšana
Korpusa 3D drukāšana
Korpusa 3D drukāšana

Es savējos izdrukāju savā Creality CR-10S, izmantojot Black PLA+ (https://amzn.to/2X2SDtE)

Es drukāju 0,2 slāņu augstumā ar 25% pildījumu.

3. solis: visu salieciet kopā + shematisks

Visu salikt kopā + shematiski
Visu salikt kopā + shematiski
Visu salikt kopā + shematiski
Visu salikt kopā + shematiski
Visu salikt kopā + shematiski
Visu salikt kopā + shematiski
Visu salikt kopā + shematiski
Visu salikt kopā + shematiski

Tas, kā jūs izvēlēsities savienot savu Arduino, ir pilnībā atkarīgs no jums - es personīgi izvēlējos sevi padarīt par “vairogu”. Lai izgatavotu vairogu, es esmu lodējis sieviešu galvenes veroboardā, lai tās atbilstu Pro Micro, pēc tam pretējos galos pievienoju sliedi +5v un GND. Esmu izmantojis džemperu vadu, lai savienotu +5v ar savu tagadējo 5v “sliedi”, un darīju to pašu attiecībā uz GND. Pēc tam es pievienoju savus 4x 100k rezistorus, viens gals savienots ar +5v visiem tiem, un tad otra puse savienojas attiecīgi ar A0, A1, A2 un A3. Pēc tam esmu pievienojis skrūvju spailes analogām tapām A0, A1, A2 un A3, kā arī tapām 2 (SDA), 3 (SCL) un 4

Izmēriet vadu un sagrieziet to atbilstošā garumā. Vispirms es sāku ar WS2812 pikseļu gaismas diodēm - PIRMAIS WS2812 gaismas diode savienojas ar +5 V no Arduino, GND no Arduino, un DIN savienojas ar tapu 4. Pēc tam atlikušie 3 ir savienoti ķēdē, saķēdējot visus 5v> 5v, GND> GND tapas un DOUT no viena Pixel, savienojas ar nākamā DIN. Kad tie ir pielodēti, viegli nospiediet tos kvadrātveida caurumos augšpusē un ievietojiet karstu līmi vietā, kā arī aizsargājiet aizmuguri no nejaušiem savienojumiem vai šortiem.

Pēc gaismas diodēm es ieskrūvēju ģitāras ligzdas ligzdas. Viens kontakts no katra savienojas ar GND, un pēc tam katra 2. tapa attiecīgi ar A0, A1, A2 un A3. Tātad tas ir 1. ligzda, A0, 2. ligzda līdz A1, 3. ligzda līdz A2 un 4. ligzda līdz A3.

Tālāk es pielodēju 4 vadus pie OLED savienojumiem un pēc iespējas nogriezu lieko lodējumu. Jūs vēlaties piestiprināt vadus no ekrāna aizmugures, tāpēc jūs lodējat pie ekrāna priekšpuses.

Pievērsiet uzmanību tapām! Dažiem OLED ir GND ārpusē, tad VCC, dažiem ir VCC ārpusē un pēc tam GND

Kad esat pielodējis un, cik vien iespējams, esat sagriezis vai saplacinājis lodēšanas savienojumu, viegli piespiediet ekrānu tā vietā. Tas ir nedaudz stingri piemērots pēc konstrukcijas, taču ņemiet vērā, ka dažādas drukas pielaides to var ietekmēt, tāpēc, lai tas būtu piemērots, jums, iespējams, būs jāveic neliela pēcapstrāde. Kad tas ir ievietots, novietojiet kādu karstu līmi pāri katram no 4 stūriem, lai tas turētos vietā.

Savienojiet visu, lai tas atbilstu shēmai un attēliem, un pēc tam, kad esat laimīgs, varat arī savā vietā pielīmēt Pro Micro un RTC pulksteni un pēc tam savienot USB paplašinājumu ar Pro Micro.

Es izmantoju mikro USB paplašinājumu, lai a) USB varētu izmantot, lai nodrošinātu strāvu, bet vēl jo vairāk, b) lai būtu iespējams pārprogrammēt Pro Micro, ja nepieciešams, visu neatdalot.

Kad esat laimīgs, pieskrūvējiet korpusu kopā, izmantojot 4 skrūves

4. solis: kontaktdakšas

Spraudņi!
Spraudņi!
Spraudņi!
Spraudņi!
Spraudņi!
Spraudņi!

Tas darbojas tā, ka visos nolūkos daļa dizaina darbojas kā "ommetrs". Omometrs ir instruments elektriskās pretestības mērīšanai. Lielākajai daļai multimetru ir šī funkcija, ar kuru jūs izvēlaties skalu un pēc tam izmērāt rezistoru, lai atrastu tā vērtību. Darba princips ir tāds, ka jūs pievienojat ZINĀTU rezistoru +ve, kas pēc tam tiek savienots ar NEZINĀTU rezistoru, kas savieno ar -ve. Savienojums starp 2 rezistoriem savienojas ar Arduino analogo tapu, lai tas varētu nolasīt spriegumu un aprēķināt pretestību.

Tas darbojas kā sprieguma dalītājs un aprēķina nezināmā rezistora pretestību.

Kā rezistoru R1 un R2 sprieguma dalītāja tīkls, Vout = Vin * R2 / (R1 + R2) - mēs izmantojam 100k mūsu zināmajam (R1) rezistoram. Tas dod mums "sprieguma kritumu"

No tā mēs tagad varam noteikt nezināmā (R2) rezistora pretestību, R2 = Vout * R1 / (Vin - Vout) - kur R1 ir mūsu 100k (100 000 omu) rezistors

Izmantojot citu pretestību katrā kontaktdakšā, kuru vēlaties izmantot, varat attiecīgi pielāgot kodu atkarībā no izmantotā ligzdas.

Es izmantoju 4 domkratu kontaktdakšas. Es izvēlējos izmantot:

Zināmais rezistors (x4) - 100k

Jack spraudnis 1 - 5,6k

Jack Spraudnis 2 - 10k

Jack Plug 3 - 22k

Džekas spraudnis 4 - 39k

Jūs, protams, varētu to paplašināt un kodēt tik daudz, cik vēlaties.

5. darbība: kods

Kods
Kods

Pirmkārt, jums būs nepieciešams Arduino IDE, kas pieejams šeit:

Jums arī jāpārliecinās, ka jums ir arī dažas Arduino bibliotēkas:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (pēc izvēles):

Piezīme par pareizā "Arduino" dēļa izvēli. Sākotnēji es sāku šo projektu ar Arduino Nano, jo tie Apvienotajā Karalistē ir ļoti lēti-apmēram 3–4 GBP vai tikai 1,50 GBP, ja iegādājaties no AliExpress (bet neievērojiet 30–50 dienu gaidīšanu)). Nano problēma ir tā, ka tā SRAM ir 2 KB (2048 baiti). Šī skice izmanto 1728 baitus dinamiskās atmiņas ar globālajiem mainīgajiem. Tas ir 84% no SRAM, atstājot tikai 320 baitus brīvu vietējiem mainīgajiem. Tas bija nepietiekami, un tas izraisīja Nano bloķēšanu un sasalšanu.

Pro Micro (Leonardo) ir 2,5K SRAM (2560 baiti), kas nozīmē, ka vietējiem mainīgajiem ir pieejami 694 baiti (skicē tiek izmantoti 72% no Pro Micro SRAM). Līdz šim tas ir izrādījies pilnīgi piemērots un stabils manam lietojumam. Ja plānojat izmantot daudz domkratu kontaktdakšu, ieteicams apsvērt iespēju izmantot kaut ko ar vairāk SRAM.

Kas attiecas uz Flash krātuvi, šī skice izmanto 88% (25252 baitus) no 30 k (gan ATMega328p [Nano], gan ATMega32u4 [Pro Micro] ir 32 k, bet 2 k ir rezervēti sāknēšanas ielādētājam)

Gadu gaitā esmu uzrakstījis simtiem Arduino skices, taču esmu hobijs - tāpēc paturiet prātā, ka dažas koda daļas var būt neefektīvas vai var būt "labāki veidi, kā to izdarīt". Tas nozīmē, ka man tas darbojas perfekti, un es esmu apmierināts ar to. Es izmantoju bibliotēkas, kurām vajadzētu darboties lielākajā daļā dēļu, neatkarīgi no tā, vai tas ir AVR (visvienkāršākais Arduino) vai SAMD21 (man ir nedaudz Cortex M0 ierīču)

Es gribēju parādīt arī citu grafiku, pamatojoties uz izmantoto ligzdu. Ja vēlaties izveidot savu, tas ir lielisks vienkāršs ceļvedis, kā izveidot C masīvu attēliem, kas tiks izmantoti šajā displejā:

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

Noteikti izmantojiet grafiku PROGMEM. Piemēram:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Pēc konstrukcijas ekrāns "pārtrauks" pēc 5 sekundēm un atgriezīsies laika rādīšanai.

Lielāko daļu iestatījumu var atrast sadaļā Iestatījumi.h, jo īpaši saistīto domkrata kontaktdakšu nosaukums ir kodēts šeit:

#define PLUG1 "ATSLĒGAS"

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

Mainīgajos ir arī dažas svarīgas koda daļas. H

pludiņš R1 = 96700,0;

pludiņš R2 = 96300,0; pludiņš R3 = 96500,0; pludiņš R4 = 96300,0;

Šīs ir ZINĀTĀS pretestības vērtības omos katram no 4 rezistoriem.

R1 savienots ar A0, R2 līdz A1, R3 līdz A2 un R4 līdz A3.

Ieteicams izmērīt 100k rezistorus, izmantojot multimetru, un izmantot precīzu rezistora vērtību. Kad viss ir pievienots, veiciet rezistora mērījumus. (Bet nav ieslēgts).

Izvēloties domkrata kontaktdakšu rezistorus, pārliecinieties, vai starp tiem ir laba omu atstarpe, un, tos kodējot, norādiet sev zemu un augstāku diapazonu nekā jūsu izvēlētais rezistors. Lūk, ko es izmantoju savā kodā:

pludiņš P1_MIN = 4000,0, P1_MAX = 7000,0; // 5.6K

pludiņš P2_MIN = 8000,0, P2_MAX = 12000,0; // 10K pludiņš P3_MIN = 20000,0, P3_MAX = 24000,0; // 22K pludiņš P4_MIN = 36000,0, P4_MAX = 42000,0; // 39K

Iemesls tam ir ņemt vērā analogo rādījumu un nelielas sprieguma svārstības utt

Tātad, kas notiek, ja konstatētā pretestība ir no 4000 omiem līdz 7000 omiem, mēs pieņemam, ka esat izmantojis 5,6 k rezistoru, un tādējādi kods to redzēs kā Jack Plug 1. Ja izmērītā pretestība ir no 8000 omiem un 12000 omi, tiek pieņemts, ka tas ir 10k rezistors un ir Jack Plug 2 un tā tālāk.

Ja jums ir jāveic atkļūdošana (neatstājiet komentārus “ražošanā”, jo sērijveida atkļūdošana izmanto dārgo aunu), vienkārši noņemiet komentārus, kas nepieciešami iestatījumu augšdaļā. H

//#define SERIAL_DEBUG

//#define WAIT_FOR_SERIAL

Lai atceltu komentāru, vienkārši noņemiet //…. lai komentētu rindu, pievienojiet // rindas priekšpusē.

SERIAL_DEBUG ļauj sērijveida atkļūdošanu un tādu lietu izmantošanu kā (piemēram)

Serial.println (F ("sveika pasaule"));

WAIT_FOR_SERIAL ir papildu darbība, kas nozīmē, ka, kamēr neatverat sērijas monitoru, kods netiks turpināts. Tas palīdz nodrošināt, lai nepalaistu garām nevienu svarīgu sērijas ziņojumu. - NEKAD neatstājiet šo iespēju

Ja atstāsit iespējotu WAIT_FOR_SERIAL, jūs nevarēsit izmantot savu atslēgu turētāju jebkurā "reālās pasaules" vidē, jo tas būs iestrēdzis, gaidot Arduino IDE sērijas monitoru, pirms tas varēs turpināt skices galveno cilpu. Kad esat pabeidzis atkļūdošanu, noteikti atceliet šīs rindas komentārus un atkārtoti augšupielādējiet skici, lai to sagatavotu/pabeigtu.

Izmantojot opciju SERIAL_DEBUG, manā kodā ir šāda informācija:

#ifdef SERIAL_DEBUG

Sērijas nospiedums (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = sizeof (SOCKET_1234_HAS_PLUGTYPE_X)/sizeof (SOCKET_1234_HAS_PLUGTYPE_X [0]); par (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Sērijas nospiedums (i); Sērijas nospiedums (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Sērijas.println (); if (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Sērijas nospiedums (ligzda+1); Serial.print (F ("ir resitance:")); Serial.println (pretestība); } #endif

Pēdējā Serial.print līnija jums pateiks, kāda ir pēdējās ievietotās ligzdas pretestība omos. Tātad šo skici varat izmantot arī kā sava veida ommetru, lai pārbaudītu domkrata kontaktdakšas pretestību.

6. darbība. Piezīmes

Es domāju, ka esmu visu aprakstījis, bet, lūdzu, komentējiet, un es darīšu visu iespējamo, lai izlasītu un atbildētu, kad varēšu:)

Atvainojiet par nedaudz slikto video - man nav statīva, pārkodēšanas iestatījumu vai atbilstošas darba vietas, tā sakot, tas tika filmēts (slikti), turot tālruni vienā rokā un mēģinot to demonstrēt ar otru.

Paldies, ka izlasījāt.

Ieteicams: