Съдържание:

Държач за ключове за жак за китара Arduino с разпознаване на жак и OLED: 7 стъпки
Държач за ключове за жак за китара Arduino с разпознаване на жак и OLED: 7 стъпки

Видео: Държач за ключове за жак за китара Arduino с разпознаване на жак и OLED: 7 стъпки

Видео: Държач за ключове за жак за китара Arduino с разпознаване на жак и OLED: 7 стъпки
Видео: Мариф Пираев устроил драку 😳 2024, Юли
Anonim
Image
Image
Държач за ключове за жак за китара Arduino с разпознаване на жак и OLED
Държач за ключове за жак за китара Arduino с разпознаване на жак и OLED

Въведение:

Тази инструкция ще опише подробно конструкцията на моя държач за ключове за плъгини, базиран на Arduino

Това е първата ми инструкция, така че моля, изтърпете ме, тъй като може да направя промени / актуализации по пътя

Стъпка 1: Части и инструменти

Части и инструменти
Части и инструменти
Части и инструменти
Части и инструменти
Части и инструменти
Части и инструменти

Повечето от частите, които закупих от Amazon.co.uk или eBay, някои вече разгледах - Ето списък на това, от което се нуждаете.

Връзките на Amazon са всички партньорски връзки, може да успеете да намерите по -евтини другаде - аз използвам Amazon Prime много, така че Amazon случайно беше моето посещение.

Исках да запазя тази конструкция сравнително евтина и бюджетна. Бихте могли да използвате по -голям TFT екран, както желаете, както и различен Arduino. Не използвайте NANO, тъй като той ще се срине поради голямото използване на паметта. Кодът използва около 72% от RAM на Pro Micro и е стабилен, но от тестването NANO ще се срине и замръзне.

(Повече подробности в стъпката Code.)

ЧАСТИ

1x Arduino Pro Micro -

1x 0.96 OLED с жълт и син дисплей -

4x WS2812 „Пиксели“-

1x DS3231 RTC -

4x 1/4 моно жак (или колкото искате) - Amazon (злато) или Amazon (сребро) или eBay.co.uk

1x пакет смесени резистори -

4x 1/4 жакове за китара -

1x Micro USB кабел Удължителен кабел -

4x M3 винтове

ИНСТРУМЕНТИ И МАТЕРИАЛИ

- Поялник (Това е този, който купих - TS100 - както дойде с допълнителни съвети

- Припой

- Пистолет за горещо лепило (https://amzn.to/2UTd9PN)

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

- Резачки/стрипери за тел (https://amzn.to/2KzqUzp)

- 3D принтер или услуга 3D печат

ОПЦИОНАЛНО - Тези елементи са незадължителни, в зависимост от това как решите да свържете всичко

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

- Винтови клемни съединители (2 полюса | 3 полюса | 4 полюса)

- Заглавия на печатни платки (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, в противоположните краища. Използвах джъмпер тел за свързване на +5v към сегашната ми 5v 'релса' и направих същото за GND. След това добавих моите 4x 100k резистори, единият край е свързан към +5v за всички тях, а след това другата страна се свързва съответно с A0, A1, A2 и A3. След това добавих винтови клеми към аналогови щифтове A0, A1, A2 и A3, а също и пинове 2 (SDA), 3 (SCL) & 4

Измерете кабелите си и ги изрежете на подходящи дължини. Започнах първо с пикселните светодиоди WS2812 - ПЪРВИят светодиод WS2812 се свързва към +5v от Arduino, GND от Arduino, а DIN се свързва към Pin 4. След това останалите 3 се свързват заедно, свързвайки всички 5v> 5v, GND> GND щифтове и DOUT от един пиксел, свързва се с DIN на следващия. Веднъж запоени, натиснете ги внимателно в квадратните отвори в горната част и поставете горещо лепило на място, а също така, за да предпазите задната част от случайни връзки или къси панталони.

След светодиодите, след това завинтвах гнездата за китара. Един щифт от всеки се свързва към GND, а след това вторият извод на всеки се свързва съответно с A0, A1, A2 и A3. Така че това е гнездо 1, към А0, гнездо 2 до А1, гнездо 3 до А2 и гнездо 4 до А3.

След това запоявах 4 проводника към OLED връзките и отрязах максимално излишната спойка. Искате да прикачите проводниците си от задната страна на екрана, така че запоявате към предната част на екрана.

Обърнете внимание на щифтовете! Някои OLED имат GND отвън, след това VCC, някои имат VCC отвън и след това GND

След като сте запоени и сте подрязали или сплескали връзката за запояване, доколкото е възможно, внимателно натиснете екрана на мястото му. Дизайнът е малко плътно прилепнал, но имайте предвид, че различните допустими отпечатъци могат да повлияят на това и затова може да се наложи да извършите малка допълнителна обработка, за да го направите подходящ. Веднъж на място, поставете малко горещо лепило във всеки от четирите ъгъла, за да го задържите на място.

Свържете всичко, за да съответства на схемата и снимките, и след като сте доволни, можете след това да залепите горещо Pro Micro и RTC Clock на място и след това да свържете USB разширението към Pro Micro.

Използвах разширение за микро USB, така че а) USB може да се използва за осигуряване на захранване, но повече, б), за да е възможно да се препрограмира Pro Micro, ако е необходимо, без да се разглобява всичко

След като сте щастливи, завийте кутията заедно с помощта на 4 винта

Стъпка 4: Щепселите

Щепселите!
Щепселите!
Щепселите!
Щепселите!
Щепселите!
Щепселите!

Начинът, по който това работи, е, че за всички цели и цели, част от дизайна работи като "омметър". Омметърът е инструмент за измерване на електрическо съпротивление. Повечето мултицети имат тази функция, при която избирате скалата и след това измервате резистор, за да намерите неговата стойност. Принципът на работа е, че свързвате ЗНАЕН резистор към +ve, който след това се свързва с НЕИЗВЕСТЕН резистор, който се свързва с -ve. Съединението между двата резистора се свързва с аналоговия щифт на Arduino, така че да може да отчете напрежението и да изчисли съпротивлението.

Той работи като делител на напрежение и изчислява съпротивлението на неизвестния резистор.

Като мрежа от разделители на напрежение на резистори R1 и R2, Vout = Vin * R2 / (R1 + R2) - Използваме 100k за нашия известен (R1) резистор. Това ни дава "спад на напрежението"

От това вече можем да определим съпротивлението на неизвестния (R2) резистор, R2 = Vout * R1 / (Vin - Vout) - където R1 е нашият 100k (100, 000 ома) резистор

Използвайки различен резистор във всеки жак, който искате да използвате, след това можете да регулирате кода в зависимост от използвания жак.

Използвам 4 щекера. Избрах да използвам:

Известен резистор (x4) - 100k

Джак Plug 1 - 5.6k

Джак Plug 2 - 10k

Джак Plug 3 - 22k

Джак 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 KB (2048 байта). Тази скица използва 1728 байта динамична памет с глобални променливи. Това е 84% от SRAM, оставяйки само 320 байта безплатни за локални променливи. Това беше недостатъчно и би накарало Nano да се заключи и замръзне.

Pro Micro (Leonardo) има 2.5K SRAM (2560 байта), което означава, че има 694 байта безплатно за локални променливи (Скицата използва 72% от SRAM на Pro Micro). Досега това се оказа напълно адекватно и стабилно за моята употреба. Ако възнамерявате да използвате много щекери, може да помислите да използвате нещо с повече SRAM.

Що се отнася до флаш паметта, тази скица използва 88% (25252 байта) от 30k (ATMega328p [Nano] и ATMega32u4 [Pro Micro] имат 32k, но 2k са запазени за зареждащия)

Написал съм стотици скици на Arduino през годините, но съм любител - така че имайте предвид, че някои части от кода може да са неефективни или да има "по -добри начини да направите това". Като се има предвид това, при мен работи перфектно и съм доволен от това. Използвах библиотеки, които ТРЯБВА да работят на повечето платки, независимо дали са AVR (най -основните Arduino) или 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, по -специално името на свързаните щепсели са кодирани тук:

#define PLUG1 "KEYS"

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

В Variables.h има и някои важни части от кода

поплавък R1 = 96700,0;

поплавък R2 = 96300,0; поплавък R3 = 96500,0; поплавък R4 = 96300,0;

Това са ЗНАНИТЕ стойности на съпротивлението, в ома, на всеки от 4 -те резистора.

R1 свързан към A0, R2 към A1, R3 до A2 и R4 към A3.

Препоръчително е да измерите вашите 100k резистори с помощта на мултицет и да използвате точната стойност на резистора. Направете измерването на резистора, след като всичко е свързано. (Но не е включен).

Когато избирате резистори за вашите жакове, се уверете, че между тях има добра омова пролука и когато ги кодирате, си осигурете хубав диапазон, по -нисък и по -висок от избрания от вас резистор. Ето какво използвах в кода си:

поплавък P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6K

поплавък 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; // 39K

Причината за това е да се отчетат аналоговите показания и незначителните колебания на напрежението и т.н.

И така, това, което се случва е, ако откритото съпротивление е между 4000 ома и 7000 ома, предполагаме, че сте използвали 5,6 k резистор и по този начин кодът ще види това като Jack Plug 1. Ако измереното съпротивление е между 8000 ома и 12000 ома, предположението е, че това е 10k резистор и е Jack Plug 2 и така нататък.

Ако трябва да направите някои отстраняване на грешки (Не оставяйте без коментар в „производство“, тъй като серийното отстраняване на грешки използва скъпоценна памет), просто декомментирайте нужните редове в горната част на Настройки. H

//#дефинирам SERIAL_DEBUG

//#дефинирам WAIT_FOR_SERIAL

За да коментирате, просто премахнете //…. за да коментирате реда отново, добавете // отново в предната част на реда.

SERIAL_DEBUG позволява серийно отстраняване на грешки и използване на неща като (например)

Serial.println (F ("здравей свят"));

WAIT_FOR_SERIAL е допълнителна стъпка, което означава, че докато не отворите Serial Monitor, кодът няма да продължи. Това помага да не пропуснете важни серийни съобщения. - НИКОГА НЕ ОСТАВЯЙТЕ ТОВА АКТИВИРАНО

Ако оставите 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]); for (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 ("има съпротивление от:")); Serial.println (съпротива); } #endif

Последният ред Serial.print ще ви каже какво е съпротивлението, в ома, на последния вмъкнат жак. Така че можете също да използвате тази скица като своеобразен омметър, за да проверите съпротивлението на щекера.

Стъпка 6: Бележки

Мисля, че съм обхванал всичко, но моля, коментирайте и ще направя всичко възможно да прочета и да отговоря, когато мога:)

Извинявам се за малко лошия видеоклип - нямам статив, настройка за прекодиране или подходящо работно пространство, така да се каже, така че това е заснето (лошо), като държи телефона в едната си ръка и се опитва да го демонстрира с другата.

Благодаря за четенето.

Препоръчано: