Mundarija:
- 1 -qadam: ehtiyot qismlar va asboblar
- 2 -qadam: Kosonni 3D bosib chiqarish
- 3 -qadam: Hammasini birlashtirish + sxematik
- 4 -qadam: vilkalar
- 5 -qadam: Kod
- 6 -qadam: Eslatmalar
- 7 -qadam: Changelog
Video: Arduino Gitara Jekni tanib oluvchi va OLEDli kalit ushlagichi: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Kirish:
Bu ko'rsatma mening Arduino asosidagi Guitar Jack plagin kalit ushlagichining tuzilishi haqida batafsil ma'lumot beradi
Bu mening birinchi o'qituvchim, shuning uchun men bilan sabr -toqat qiling, chunki men yo'lda o'zgartirishlar / yangilanishlar kiritishim mumkin
1 -qadam: ehtiyot qismlar va asboblar
Aksariyat qismlarni Amazon.co.uk yoki eBay -dan sotib oldim, ba'zilarini men allaqachon tepib yubordim - Mana sizga kerak bo'lgan narsalar ro'yxati.
Amazon havolalari - bu Hamma sheriklik havolalari, siz boshqa joydan arzonroq topishingiz mumkin - men Amazon Prime -dan juda ko'p foydalanaman, shuning uchun Amazon shunchaki men uchun bordi.
Men bu qurilishni ancha arzon va byudjetga mos saqlashni xohlardim. Siz xohlaganingizdek kattaroq TFT ekranidan, shuningdek boshqa Arduino -dan foydalanishingiz mumkin. NANO -dan foydalanmang, chunki u xotiradan yuqori foydalanish tufayli qulab tushadi. Kod Pro Micro operativ xotirasining 72 foizini ishlatadi va barqaror, lekin sinovdan NANO qulab tushadi va muzlab qoladi.
(Batafsil kod bosqichida.)
QISMLAR
1x Arduino Pro Micro -
Sariq va ko'k displeyli 1x 0,96 dyuymli OLED -
4x WS2812 'piksel' -
1x DS3231 RTC -
4x 1/4 dyuymli Mono Jek (Yoki xohlaganingizcha) - Amazon (Oltin) yoki Amazon (Kumush) yoki eBay.co.uk
1x aralash rezistorlar to'plami -
4x 1/4 dyuymli gitara uyasi -
1x Micro USB kabel uzaytiruvchi kabeli -
4x M3 vintlardek
QUROLLAR VA MATERIALLAR
- Lehimlash dazmollari
- Lehim
- Issiq yopishtiruvchi qurol (https://amzn.to/2UTd9PN)
- Tel (https://amzn.to/2VK2ILU)
- Sim kesgichlar/striptizchilar (https://amzn.to/2KzqUzp)
- 3D printer yoki 3D bosib chiqarish xizmati
QO'ShIMChA - Bu elementlar ixtiyoriydir, bu siz hamma narsani qanday ulashni tanlashingizga bog'liq
- Veroboard/Stripboard (https://amzn.to/2KzMFPE)
- Vintli terminal ulagichlari (2 qutbli | 3 qutbli | 4 qutbli)
- PCB sarlavhalari (https://amzn.to/2X7RjWf)
2 -qadam: Kosonni 3D bosib chiqarish
Men o'zimning Creality CR-10S-da Black PLA+ yordamida chop qildim (https://amzn.to/2X2SDtE)
Men 0,2 qatlam balandlikda, 25% to'ldirish bilan chop etdim.
3 -qadam: Hammasini birlashtirish + sxematik
Arduino -ni qanday ulashni o'zingiz hal qilasiz - men shaxsan o'zimni "qalqon" qilishni tanladim. Qalqonni yasash uchun men Pro Micro -ga mos keladigan ayol boshlarini veroboardga lehimladim, keyin qarama -qarshi uchlarida +5v va GND temir yo'lini qo'shdim. Men +5v ni hozirgi 5v "temir yo'li" ga ulash uchun o'tish simini ishlatardim va GND uchun ham shunday qildim. Keyin men 4x 100k rezistorlarimni qo'shdim, bir uchi hammasi uchun +5v ga ulangan, keyin ikkinchi tomoni mos ravishda A0, A1, A2 va A3 ga ulangan. Keyin men A0, A1, A2 va A3 analog pinlariga vintli terminallarni, shuningdek, 2 (SDA), 3 (SCL) va 4 -pinlarni qo'shdim.
Elektr simlarini o'lchab, kerakli uzunliklarga kesib oling. Men birinchi bo'lib WS2812 pikselli LED -laridan boshladim - BIRINChI WS2812 LED Arduino -dan +5v ga, Arduino -dan GND -ga, DIN esa 4 -pinga ulanadi. Shundan so'ng, qolgan 3 ta 5V> 5v zanjir bilan bog'lab qo'yilgan. GND> GND pinlari va DOUT bitta Pixel -dan keyingi DIN -ga ulanadi. Lehimlangandan so'ng, ularni tepadagi to'rtburchaklar teshiklariga, issiq yopishtiruvchi joyiga sekin bosing va orqa qismini tasodifiy ulanish yoki qisqa tutashuvdan saqlang.
LEDlardan so'ng, men gitara uyasi rozetkalarini burab qo'ydim. Har birining bitta pimi GND ga, so'ngra har birining 2 -piniga mos ravishda A0, A1, A2 va A3 ga ulanadi. Shunday qilib, bu Socket 1, A0, Soket 2 - A1, Soket 3 - A2 va Soket 4 - A3.
Keyin men OLED ulanishiga 4 ta simni lehimladim va ortiqcha lehimni iloji boricha kesib tashladim. Siz simlaringizni ekranning orqa qismidan ulashni xohlaysiz, shuning uchun siz ekranning old qismiga lehimsiz.
Pimlarga e'tibor bering! Ba'zi OLED -larda tashqi tomondan GND, keyin VCC, ba'zilarining tashqarisida VCC, keyin esa GND bor
Bir marta lehimlangandan so'ng, siz lehim aloqasini iloji boricha kesib tashladingiz yoki tekisladingiz, ekranni joyiga sekin bosing. Bu dizayn jihatidan biroz mahkamlangan, lekin shuni bilingki, har xil bosma toleranslar bunga ta'sir qilishi mumkin, shuning uchun siz uni moslashtirish uchun birozdan keyin ishlov berishingiz kerak bo'ladi. Joyga qo'yilgandan so'ng, uni ushlab turish uchun 4 burchakning har biriga issiq elim qo'ying.
Sxematik va rasmlarga mos keladigan hamma narsani ulang va baxtli bo'lgandan so'ng, siz Pro Micro va RTC soatlarini issiq yopishtirishingiz va USB kengaytmasini Pro Micro -ga ulashingiz mumkin.
Men micro USB kengaytmasini ishlatardim, a) USB quvvat bilan ta'minlanishi mumkin, lekin b) shuning uchun agar kerak bo'lsa, hamma narsani ajratmasdan Pro Micro -ni qayta dasturlash mumkin edi.
Baxtli bo'lgandan so'ng, ishni 4 vint yordamida mahkamlang
4 -qadam: vilkalar
Bu qanday ishlaydi, dizaynning bir qismi "ohmmetr" sifatida ishlaydi. Ohmmetr - elektr qarshiligini o'lchash uchun asbob. Ko'pgina multimetrlar bu funktsiyaga ega, shunda siz o'lchovni tanlaysiz va uning qiymatini topish uchun rezistorni o'lchaysiz. Ishchi printsip shundaki, siz bilgan qarshilikni +ve ga ulashingiz kerak, u keyin -ve ga ulanadigan BILIMSIZ rezistorga ulanadi. 2 rezistor orasidagi birikma Arduino analog piniga ulanadi, shunda u kuchlanishni o'qiydi va qarshilikni hisoblaydi.
U kuchlanish bo'luvchi kabi ishlaydi va noma'lum qarshilik qarshiligini hisoblab chiqadi.
R1 va R2 rezistorlarining kuchlanish bo'luvchi tarmog'i sifatida, Vout = Vin * R2 / (R1 + R2) - Biz ma'lum bo'lgan (R1) qarshilik uchun 100k dan foydalanayapmiz. Bu bizga "kuchlanish pasayishi" ni beradi
Shundan kelib chiqib, biz hozir noma'lum (R2) rezistor qarshiligini ishlab chiqishimiz mumkin.
R2 = Vout * R1 / (Vin - Vout) - bu erda R1 - 100k (100000 ohm) qarshiligimiz
Siz foydalanmoqchi bo'lgan har bir ulagichga boshqa rezistorni qo'llagan holda, siz kodni mos keladigan rozetkaga qarab sozlashingiz mumkin.
Men 4 ta ulagichdan foydalanaman. Men foydalanishni tanladim:
Ma'lum qarshilik (x4) - 100k
Jek vilkasi 1 - 5,6 ming
Jek vilkasi 2 - 10k
Jek Plug 3 - 22k
Jek Plug 4 - 39k
Siz, albatta, buni kengaytirib, xohlaganingizcha kod yozishingiz mumkin.
5 -qadam: Kod
Birinchidan, sizga bu erda mavjud bo'lgan Arduino IDE kerak bo'ladi:
Bundan tashqari, sizda bir nechta Arduino kutubxonasi borligiga ishonch hosil qilishingiz kerak bo'ladi:
Adafruit NeoPixel:
u8g2:
Adafruit RTCLib:
Adafruit SleepyDog (ixtiyoriy):
To'g'ri "Arduino" taxtasini tanlash haqida eslatma. Dastlab men bu loyihani Arduino Nano bilan boshlaganman, chunki ular Buyuk Britaniyada taxminan 3-4 funt sterlingga, yoki AliExpressdan sotib olsangiz, 1,50 funtga arzon (lekin 30-50 kun kutishga qarshi emas)). Nano bilan bog'liq muammo shundaki, bu SRAM - 2 KB (2048 bayt). Ushbu eskizda global o'zgaruvchilar bilan 1728 baytli dinamik xotira ishlatiladi. Bu SRAMning 84%, mahalliy o'zgaruvchilar uchun atigi 320 bayt bo'sh qoladi. Bu etarli emas edi va Nano qulflanib qolib ketishiga olib keldi.
Pro Micro (Leonardo) 2,5K SRAM (2560 bayt) ga ega, ya'ni mahalliy o'zgaruvchilar uchun 694 bayt bo'sh (Proket Micro SRAM -ning 72% ishlatilgan). Hozircha bu mening foydalanishim uchun juda mos va barqaror bo'lib chiqdi. Agar siz ko'p ulagichlardan foydalanmoqchi bo'lsangiz, SRAM -dan ko'proq narsani ishlatishingiz mumkin.
Flash xotirasiga kelsak, bu eskizda 30% ning 88% (25252 bayt) ishlatiladi (ATMega328p [Nano] va ATMega32u4 [Pro Micro] ikkalasida ham 32k, lekin 2k yuklovchi uchun saqlangan)
Men yillar davomida yuzlab Arduino eskizlarini yozganman, lekin men havaskorman - shuni yodda tutingki, kodning ba'zi qismlari samarasiz bo'lishi mumkin yoki "buni qilishning yaxshiroq usullari" bo'lishi mumkin. Aytgancha, bu men uchun juda yaxshi ishlaydi va men bundan mamnunman. Men AVR (eng asosiy Arduino) yoki SAMD21 bo'lsin (menda bir nechta Cortex M0 qurilmalari bor) bo'lsin, ko'pgina taxtalarda ishlashi kerak bo'lgan kutubxonalardan foydalandim.
Men ishlatilgan uyaga qarab boshqa grafikani ko'rsatishni xohlardim. Agar siz o'zingiz yaratmoqchi bo'lsangiz, bu displeyda ishlatiladigan tasvirlar uchun C massivini yaratish bo'yicha ajoyib oddiy qo'llanma:
sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/
Grafika uchun PROGMEMdan foydalanganingizga ishonch hosil qiling. Masalan:
statik const imzosiz belgisi YOUR_IMAGE_NAME PROGMEM = {}
Dizayni bo'yicha, ekran 5 soniyadan so'ng "tanaffus" qiladi va vaqtni ko'rsatishga qaytadi.
Sozlamalarning ko'pini Settings.h da topish mumkin, xususan, ulangan ulagichlarning nomi bu erda kodlangan:
#aniqlang PLUG1 "KEYS"
#PLUG2 "P2" ni aniqlang #PLUG3 "P3" ni belgilang #PLUG4 "P4" ni belgilang #Umumiy "NA" ni aniqlang
Variables.h ichida kodning muhim qismlari ham bor
float R1 = 96700.0;
float R2 = 96300.0; float R3 = 96500.0; float R4 = 96300.0;
Bu 4 ta rezistorning ohmda ma'lum bo'lgan qarshilik qiymatlari.
R1 A0, R2 - A1, R3 - A2 va R4 - A3 ga ulangan.
100k qarshiligingizni multimetr yordamida o'lchash va rezistorning aniq qiymatini ishlatish maqsadga muvofiqdir. Hamma narsa ulangandan so'ng rezistorning o'lchovini oling. (Lekin yoqilmagan).
Jek vilkalari uchun rezistorlarni tanlayotganda, ular orasidagi ohm oralig'i yaxshi ekanligiga ishonch hosil qiling va ularni kodlashda o'zingiz tanlagan rezistordan pastroq va balandroq oraliq bering. Mana mening kodimda nima ishlatganman:
float P1_MIN = 4000.0, P1_MAX = 7000.0; // 5,6 ming
float P2_MIN = 8000.0, P2_MAX = 12000.0; // 10K float P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K float P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K
Buning sababi analog o'qish va kuchlanishning kichik tebranishlarini hisobga olishdir
Xo'sh, nima bo'ladi, agar aniqlangan qarshilik 4000 ohmdan 7000 ohmgacha bo'lsa, biz siz 5.6k rezistor ishlatgan deb taxmin qilyapmiz, shuning uchun kod buni Jek Plug 1 sifatida ko'radi. Agar o'lchangan qarshilik 8000 ohm va 12000 ohm, bu 10k qarshilik va Jek Plug 2 va boshqalar.
Agar siz disk raskadrovka qilishingiz kerak bo'lsa ("ishlab chiqarishda" sharhlanmagan qoldirmang, chunki ketma -ket disk raskadrovka qimmatbaho qo'chqorni ishlatadi).
//#SERIAL_DEBUG ni aniqlang
//#SERIALNI KUTISHNI belgilang
Fikr bildirmaslik uchun, // ni olib tashlang. chiziqni sharhlash uchun // satr oldiga // ni qayta qo'shing.
SERIAL_DEBUG ketma -ket disk raskadrovka va (masalan) kabi narsalardan foydalanishga imkon beradi.
Serial.println (F ("salom dunyo"));
WAIT_FOR_SERIAL - bu qo'shimcha qadam, ya'ni Serial monitorni ochmaguningizcha kod davom etmaydi. Bu sizga muhim ketma -ket xabarlarni o'tkazib yubormaslikka yordam beradi. - Hech qachon bu yoqilganni qoldirmang
Agar siz WAIT_FOR_SERIAL -ni yoqsangiz, siz kalit ushlagichini "haqiqiy dunyo" muhitida ishlata olmaysiz, chunki u eskizning asosiy halqasida davom etishidan oldin Arduino IDE Serial monitorini kutib qoladi. Nosozliklarni tuzatishni tugatganingizdan so'ng, ushbu qatorni yana izohdan chiqarganingizga ishonch hosil qiling va ishlab chiqarish/tugatish uchun eskizingizni qayta yuklang.
SERIAL_DEBUG opsiyasidan foydalanganda mening kodim quyidagilarni o'z ichiga oladi:
#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]); uchun (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 [soket]) {Serial.print (F ("Soketga ulang"))); Serial.print (soket+1); Serial.print (F ("o'zgarmasligi bor:")); Serial.println (qarshilik); } #endif
Oxirgi Serial.print liniyasi ohmda oxirgi o'rnatilgan uyaning qarshiligi nima ekanligini aytib beradi. Shunday qilib, siz ushbu eskizni rozetkaning qarshiligini tekshirish uchun ohmmetr sifatida ishlatishingiz mumkin.
6 -qadam: Eslatmalar
O'ylaymanki, men hamma narsani yoritganman, lekin iltimos, sharh qoldiring va men qo'limdan kelganicha o'qishga va javob berishga harakat qilaman:)
Kambag'al video uchun uzr - menda shtativ, qayta yozish moslamasi yoki to'g'ri ish joyi yo'q, shuning uchun bu telefonni bir qo'lida ushlab, ikkinchi qo'li bilan demo qilishga urinish (yomon) tasvirga olingan.
O'qiganingiz uchun tashakkur.
Tavsiya:
Yuz tanib oluvchi eshik qo'ng'irog'i: 7 qadam (rasmlar bilan)
Yuz tanib oluvchi eshik qo'ng'irog'i: Motivatsiya So'nggi paytlarda mening mamlakatimda qariyalar uylariga qarata uyushtirilgan qaroqchilik to'lqini sodir bo'ldi. Odatda, kirishga ruxsat beruvchilarning o'zlari tomonidan beriladi, chunki tashrif buyuruvchilar ularni tarbiyachi/hamshira ekanligiga ishontiradilar. Bu
Arduino Uno R3 bilan nafas oluvchi LED: 5 qadam
LEDni Arduino Uno R3 yordamida nafas olish: Bu darsda biz qiziq bir narsani sinab ko'ramiz - dasturlash orqali LEDning yorqinligini bosqichma -bosqich o'zgartiramiz. Pulsatsiyalanuvchi yorug'lik nafas olayotganga o'xshaganligi sababli, biz unga sehrli nom beramiz - nafas oluvchi LED. Biz bu ta'sirni puls kengligi m bilan bajaramiz
Ovozli boshqariladigan aqlli kalit ushlagichi: 3 qadam (rasmlar bilan)
Ovozli boshqariladigan aqlli kalit ushlagichi: Siz kalitlarni boshqarishni yaxshi bilmaydigan va har bir kalit uchun har bir kalitni sinab ko'rishingiz kerak bo'lgan odammisiz? juda o'z ovozli boshqariladigan aqlli kalit ushlagichi
Radio Aux Jekni tuzatish / Media qabul qilgichni kiritish: 6 qadam (rasmlar bilan)
Radio Aux Jekni ta'mirlash / Media qabul qilgichni orqasiga chiziq qo'shish: yaqinda men 2013 yilgi Silverado yordamchi uyasi bo'shab qolganini payqadim. Bu ajablanarli joyi yo'q, chunki men uni tez -tez ishlataman va yordamchi simni jakka osib qo'yaman. Buni tuzatish uchun men bir nechta panelni chiziqdan olib tashlashim, apani olib tashlashim kerak edi
Gitara qahramoni va naushnik qobig'i/ushlagichi: 5 qadam
Gitara qahramoni va minigarnituralar ushlagichi/ushlagichi: Qoziqlardan charchadingiz, minigarniturani va GH boshqaruvini osib qo'ying va ularni barmoq uchida saqlang