Мазмұны:

Ардуино гитарасының ұясын ұстаушы, OLED: 7 қадам
Ардуино гитарасының ұясын ұстаушы, OLED: 7 қадам

Бейне: Ардуино гитарасының ұясын ұстаушы, OLED: 7 қадам

Бейне: Ардуино гитарасының ұясын ұстаушы, OLED: 7 қадам
Бейне: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Шілде
Anonim
Image
Image
Arduino гитарасының ұя ұстаушысы, джек тануы мен OLED
Arduino гитарасының ұя ұстаушысы, джек тануы мен OLED

Кіріспе:

Бұл нұсқаулық менің Arduino негізіндегі Guitar Jack плагинінің кілт ұстағышының құрылысын егжей -тегжейлі көрсетеді

Бұл менің бірінші нұсқаулығым, сондықтан жолда өзгерістер / жаңартулар енгізуіме шыдаңыз

1 -қадам: Бөлшектер мен құралдар

Бөлшектер мен құралдар
Бөлшектер мен құралдар
Бөлшектер мен құралдар
Бөлшектер мен құралдар
Бөлшектер мен құралдар
Бөлшектер мен құралдар

Мен Amazon.co.uk немесе eBay -ден сатып алған бөлшектердің көпшілігін, кейбіреулерін қазірдің өзінде айналдырдым - мұнда сізге қажет заттардың тізімі берілген.

Amazon сілтемелері - бұл серіктестік сілтемелер, сіз басқа жерден арзанырақ таба аласыз - мен Amazon Prime -ды көп қолданамын, сондықтан Amazon менің қолымнан келді.

Мен бұл құрылысты өте арзан және үнемді етіп ұстағым келді. Сіз қалағаныңызша үлкен TFT экранын, сондай -ақ басқа Arduino -ны қолдана аласыз. NANO қолданбаңыз, себебі ол жадтың көп пайдаланылуына байланысты бұзылады. Код Pro Micro жедел жадының шамамен 72% -ын пайдаланады және тұрақты, бірақ тестілеуден NANO бұзылады және қатып қалады.

(Толығырақ код қадамында.)

БӨЛІКТЕР

1x Arduino Pro Micro -

Сары және көк дисплейі бар 1х 0,96 дюймдік OLED -

4x WS2812 'пиксельдер -

1x DS3231 RTC -

4x 1/4 дюймдік моно Джек (немесе қалағаныңызша) - Amazon (Алтын) немесе Amazon (Күміс) немесе eBay.co.uk

1x аралас резисторлар жиынтығы -

4х 1/4 дюймдік гитара ұялары -

1x Micro USB кабелі ұзартқыш кабелі -

4x M3 бұрандалары

ҚҰРАЛДАР МАТЕРИАЛДАР

- Пісіру темірі (бұл мен сатып алған - TS100 - ол қосымша кеңестермен келді

- Дәнекер

- Ыстық желім пистолеті (https://amzn.to/2UTd9PN)

- Сым (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 басып шығару

Мен өзімді Black PLA+ көмегімен Creality CR-10S-те басып шығардым (https://amzn.to/2X2SDtE)

Мен 0,2 қабат биіктігінде, 25% толтырумен басып шығардым.

3 -қадам: Барлығын біріктіру + Схема

Барлығын біріктіру + схема
Барлығын біріктіру + схема
Барлығын біріктіру + схема
Барлығын біріктіру + схема
Барлығын біріктіру + схема
Барлығын біріктіру + схема
Барлығын біріктіру + схема
Барлығын біріктіру + схема

Сіз Arduino -ны қалай қосуды өзіңіз шешесіз - мен өзімді «қалқан» етуді таңдадым. Қалқан жасау үшін мен әйелдердің тақырыптарын Pro Micro -ге сәйкестендіру үшін велосипедке дәнекерледім, содан кейін қарама -қарсы жақтағы +5в және GND рельсін қостым. Мен +5в -ты қазіргі 5В 'рельсіме қосу үшін қосқыш сымды қолдандым және GND үшін де солай жасадым. Содан кейін мен 4x 100k резисторымды қостым, олардың бір ұшы +5в -ге қосылған, содан кейін екінші жағы сәйкесінше A0, A1, A2 & A3 -ке қосылады. Содан кейін мен A0, A1, A2 & A3 аналогтық түйреуіштерге бұрандалы терминалдарды, сонымен қатар 2 (SDA), 3 (SCL) & 4 түйреуіштерін қостым.

Сымдарды өлшеп, тиісті ұзындықтарға кесіңіз. Мен алдымен WS2812 пиксельді жарық диодтарынан бастадым - БІРІНШІ WS2812 жарық диоды Arduino -дан +5v -ке, Arduino -дан GND -ке, ал DIN 4 -ші пинге қосылады. Осыдан кейін қалған 3 -і тізбектеліп, барлық 5v> 5v, GND> GND түйреуіштері мен DOUT бір пикселден, келесі DIN -ге қосылады. Дәнекерленгеннен кейін, оларды жоғарғы жағындағы төртбұрышты тесіктерге ақырын басыңыз, ыстық желімді орнына қойыңыз, сондай -ақ артқы жағын кездейсоқ қосылыстардан немесе шорттардан қорғаңыз.

Жарық диодтарынан кейін мен гитараның ұяларын бұрап алдым. Әрқайсысының бір штыры GND -ге қосылады, содан кейін олардың әрқайсысының 2 -ші түйіні сәйкесінше A0, A1, A2 & A3 -ке қосылады. Яғни, бұл Socket 1, A0 - 2, A1 - Socket 2, A2 - 3 ұяшығы және 4 - A3 ұяшығы.

Содан кейін мен OLED қосылымдарына 4 сымды дәнекерледім және артық дәнекерлеуді мүмкіндігінше қысқарттым. Сіз сымдарды экранның артқы жағынан бекіткіңіз келеді, сондықтан сіз экранның алдыңғы жағына дәнекерлейсіз.

Шамдарға назар аударыңыз! Кейбір OLED -дің сыртында GND, содан кейін VCC, кейбірінің сыртында VCC, содан кейін GND бар

Дәнекерленгеннен кейін және сіз дәнекерлеу қосылымын мүмкіндігінше қысқартқаннан кейін экранды оның орнына ақырын басыңыз. Дизайн бойынша бұл өте тығыз, бірақ әр түрлі баспа рұқсат етулері бұған әсер етуі мүмкін екенін біліңіз, сондықтан оны орналастыру үшін сізге кішкене кейінгі өңдеу қажет болуы мүмкін. Орналастырылғаннан кейін, оны ұстап тұру үшін 4 бұрыштың әрқайсысына ыстық желім салыңыз.

Барлығын схемаға және суреттерге сәйкес келтіру үшін қосыңыз, және бақытты болғаннан кейін Pro Micro мен RTC сағаттарын ыстық желіммен жабыстыруға болады, содан кейін USB кеңейтімін Pro Micro -ге қосуға болады.

Мен микро USB кеңейтімін қолдандым, а) USB қуатпен қамтамасыз етілуі мүмкін, бірақ одан да көп, б) қажет болған жағдайда Pro Micro бағдарламасын қайта бөліп алуға болады, сондықтан бәрін бөлшектемей -ақ қойдым.

Бақытты болғаннан кейін, корпусты 4 бұранданың көмегімен бұраңыз

4 -қадам: Штепсельдер

Штепсельдер!
Штепсельдер!
Штепсельдер!
Штепсельдер!
Штепсельдер!
Штепсельдер!

Бұл қалай жұмыс істейді, дизайнның бір бөлігі «омметр» ретінде жұмыс істейді. Омметр - электр кедергісін өлшеуге арналған құрал. Мультиметрлердің көпшілігінде бұл функция бар, оның көмегімен сіз шкаланы таңдайсыз, содан кейін оның мәнін табу үшін резисторды өлшейсіз. Жұмыс принципі -сіз білетін резисторды +ve -ге қосасыз, содан кейін ол -ve -ге қосылатын БЕЛГІСІЗ резисторға қосылады. 2 резистордың түйісуі Arduino аналогтық түйреуішке қосылады, осылайша ол кернеуді оқи алады және қарсылықты есептей алады.

Ол кернеуді бөлгіш сияқты жұмыс істейді және белгісіз резистордың кедергісін есептейді.

R1 және R2 резисторларының кернеу бөлгіш желісі ретінде

Vout = Vin * R2 / (R1 + R2) - Біз белгілі (R1) резистор үшін 100k қолданамыз. Бұл бізге «кернеудің төмендеуін» береді

Осыдан біз енді белгісіз (R2) резистордың қарсылығын анықтай аламыз.

R2 = Vout * R1 / (Vin - Vout) - мұнда R1 - біздің 100k (100 000 Ом) резисторымыз

Сіз қолданғыңыз келетін әр штепсельдік ұяда басқа резисторды қолдана отырып, сіз кодты сәйкесінше қолданыстағы ұяға байланысты реттей аласыз.

Мен 4 ұялы ашаны қолданамын. Мен қолдануды жөн көрдім:

Белгілі резистор (x4) - 100 мың

Джек штепсель 1 - 5,6 мың

Джек штепсель 2 - 10к

Джек штепсель 3 - 22к

Джек штепсель 4 - 39 мың

Сіз, әрине, оны кеңейте аласыз және қалағаныңызша код жасай аласыз.

5 -қадам: Кодекс

Кодекс
Кодекс

Біріншіден, сізге Arduino IDE қажет, оны мына жерден алуға болады:

Сізде бірнеше Arduino кітапханасы бар екеніне көз жеткізуіңіз керек:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (міндетті емес):

«Arduino» тақтасын дұрыс таңдау туралы ескерту. Бастапқыда мен бұл жобаны Arduino Nano-мен бастадым, өйткені олар Ұлыбританияда шамамен 3-4 фунт стерлингке сатылады, немесе AliExpress-тен сатып алсаңыз-1,50 фунт стерлингке дейін (бірақ 30-50 күн күтуге қарсы болмаңыз)). Наноға қатысты мәселе - бұл SRAM - 2 KB (2048 байт). Бұл эскизде жаһандық айнымалылармен бірге 1728 байт динамикалық жады қолданылады. Бұл SRAM -тың 84%, жергілікті айнымалылар үшін 320 байт бос қалады. Бұл жеткіліксіз болды және наноның құлыпталуына және қатуына әкелді.

Pro Micro (Леонардо) 2.5K SRAM (2560 байт) бар, бұл жергілікті айнымалылар үшін 694 байт бос екенін білдіреді (эскизде Pro Micro SRAM 72% пайдаланылады). Әзірге бұл менің пайдалану үшін өте қолайлы және тұрақты болып шықты. Егер сіз көптеген ұяшықтарды пайдаланғыңыз келсе, онда сіз SRAM -мен көбірек нәрсені қолданғыңыз келуі мүмкін.

Flash сақтауына келетін болсақ, бұл эскизде 88% (25252 байт) 30к пайдаланылады (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 қолданғаныңызға көз жеткізіңіз. Мысалы:

YOUR_IMAGE_NAME PROGMEM = {} белгісіз статикалық const белгісі жоқ

Дизайн бойынша экран 5 секундтан кейін «күту уақыты» болады және уақытты көрсетуге қайта оралады.

Параметрлердің көбін Settings.h сайтынан табуға болады, атап айтқанда, байланысқан ұялардың атауының аты мына жерде кодталған:

#PLUG1 «KEYS» анықтаңыз

#PLUG2 «P2» анықтау #PLUG3 «P3» анықтау #PLUG4 «P4» анықтау #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 қосылады.

Мультиметр көмегімен 100 к резисторды өлшеп, резистордың нақты мәнін қолданған жөн. Барлығы қосылғаннан кейін резистордың өлшемін алыңыз. (Бірақ қосылмайды).

Штепсельдік розеткаларға резистор таңдағанда, олардың арасында жақсы ом алшақтығына көз жеткізіңіз және оларды кодтау кезінде өзіңіз таңдаған резистордан төмен және жоғары жақсы диапазон беріңіз. Міне менің кодта қолданғаным:

қалқымалы 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 Ом мен 7000 Ом аралығында болса, онда сіз 5.6k резисторды қолдандыңыз деп ойлаймыз, сондықтан код оны Jack Plug 1 деп көрсетеді. Егер өлшенген кедергі 8000 Ом және 12000 Ом, бұл 10 к резистор және Джек Плег 2 және т.б.

Егер сізге отладка жасау қажет болса (сериялы отладтау бағалы қошқарды пайдаланатындықтан, «өндірісте» пікір қалдырмаңыз) Параметрлердің жоғарғы жағында қажет сызықтарды жай ғана босатыңыз.

//#SERIAL_DEBUG анықтау

//#СЕРИАЛДЫ КҮТУШІН анықтаңыз

Түсініктеме бермеу үшін //… алып тастаңыз. жолға түсініктеме беру үшін // жолдың алдыңғы жағына қайта қосыңыз.

SERIAL_DEBUG сериялық күйін келтіруге және (мысалы) сияқты нәрселерді пайдалануға мүмкіндік береді.

Serial.println (F («сәлем әлемі»));

WAIT_FOR_SERIAL - бұл қосымша қадам, яғни сіз сериялық мониторды ашпайынша, код жалғаспайды. Бұл маңызды сериялық хабарларды жіберіп алмауға көмектеседі. - ЕШҚАШАН ОСЫ ҚОСЫЛҒАНДЫ қалдырмаңыз

Егер сіз 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 («Штепсельдік розетка»)); Serial.print (розетка+1); Serial.print (F («қарсылығы бар:»)); Serial.println (қарсылық); } #endif

Соңғы Serial.print желісі сізге соңғы кірістірілген ұяның кедергісі не екенін көрсетеді. Сонымен қатар, сіз бұл эскизді розетка ашасының кедергісін тексеру үшін омметр ретінде пайдалана аласыз.

6 -қадам: Ескертулер

Мен бәрін қамтыдым деп ойлаймын, бірақ түсініктеме беріңіз, мен мүмкіндігінше оқып, жауап беруге тырысамын:)

Біршама нашар бейне үшін кешірім сұраймын - менде штатив, қайта кодтау қондырғысы немесе дұрыс жұмыс кеңістігі жоқ, сондықтан бұл телефонды бір қолында ұстап, екінші қолымен демонстрациялауға тырысқан (нашар) түсірілген.

Оқығаныңыз үшін рахмет.

Ұсынылған: