فهرست مطالب:

دارنده کلید جک گیتار آردوینو با تشخیص جک و OLED: 7 مرحله
دارنده کلید جک گیتار آردوینو با تشخیص جک و OLED: 7 مرحله

تصویری: دارنده کلید جک گیتار آردوینو با تشخیص جک و OLED: 7 مرحله

تصویری: دارنده کلید جک گیتار آردوینو با تشخیص جک و OLED: 7 مرحله
تصویری: کولر جک S5 چطور کم و زیاد می‌شود؟ و چگونه می‌توان با کولر جک S5 کار کرد؟ 2024, جولای
Anonim
Image
Image
دارنده کلید جک گیتار آردوینو با تشخیص جک و OLED
دارنده کلید جک گیتار آردوینو با تشخیص جک و OLED

مقدمه:

این دستورالعمل ساختار نگهدارنده کلید افزونه Guitar Jack مبتنی بر آردوینو را توضیح می دهد

این اولین دستورالعمل آموزشی من است ، بنابراین لطفاً با من همراه باشید زیرا ممکن است در طول مسیر تغییرات / به روز رسانی ها را انجام دهم

مرحله 1: قطعات و ابزارها

قطعات و ابزارها
قطعات و ابزارها
قطعات و ابزارها
قطعات و ابزارها
قطعات و ابزارها
قطعات و ابزارها

اکثر قطعاتی را که از Amazon.co.uk یا eBay خریداری کرده ام ، برخی از آنها را قبلاً به هم ریخته بودم - در اینجا لیستی از آنچه شما نیاز دارید آورده شده است.

پیوندهای آمازون همه پیوندهای وابسته هستند ، ممکن است بتوانید مکانهای ارزان تری را در جاهای دیگر پیدا کنید - من از آمازون پرایم زیاد استفاده می کنم ، بنابراین آمازون به طور اتفاقی مورد علاقه من بود.

من می خواستم این ساختمان را نسبتاً کم هزینه و مقرون به صرفه نگه دارم. در صورت تمایل می توانید از صفحه نمایش TFT بزرگتر و همچنین آردوینو متفاوت استفاده کنید. از NANO استفاده نکنید ، زیرا به دلیل استفاده از حافظه زیاد خراب می شود. این کد حدود 72 درصد از رم Pro Micro را استفاده می کند و پایدار است ، اما با آزمایش ، NANO خراب می شود و یخ می زند.

(جزئیات بیشتر در مرحله کد.)

قطعات

1x Arduino Pro Micro -

1x 0.96 OLED با صفحه زرد و آبی -

4x WS2812 "پیکسل" -

1x DS3231 RTC -

4x 1/4 Mono Jack (یا به تعداد دلخواه) - آمازون (طلا) یا آمازون (نقره ای) یا eBay.co.uk

1x بسته مقاومت مخلوط -

4x 1/4 جک گیتار -

1x کابل افزودنی کابل Micro USB -

4 پیچ M3

ابزارها و مواد

- آهن لحیم کاری (این چیزی است که من خریدم - TS100 - همانطور که با نکات اضافی همراه بود

- لحیم کاری

- تفنگ چسب داغ (https://amzn.to/2UTd9PN)

- سیم (https://amzn.to/2VK2ILU)

- سیم برش/برنده کننده (https://amzn.to/2KzqUzp)

- خدمات چاپگر سه بعدی یا چاپ سه بعدی

اختیاری - بسته به نحوه اتصال همه چیز به یکدیگر ، این موارد اختیاری است

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

- اتصالات ترمینال پیچ (2 قطب | 3 قطب | 4 قطب)

- سرفصل های PCB (https://amzn.to/2X7RjWf)

مرحله 2: چاپ سه بعدی قاب

چاپ سه بعدی قاب
چاپ سه بعدی قاب
چاپ سه بعدی قاب
چاپ سه بعدی قاب
چاپ سه بعدی قاب
چاپ سه بعدی قاب
چاپ سه بعدی قاب
چاپ سه بعدی قاب

من معدن را در Creality CR-10S خود ، با استفاده از Black PLA+ (https://amzn.to/2X2SDtE) چاپ کردم.

من در ارتفاع 0.2 لایه با 25٪ پر کردن چاپ کردم.

مرحله 3: همه چیز را کنار هم قرار دهید + شماتیک

همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک
همه چیز را کنار هم قرار دهید + شماتیک

نحوه اتصال آردوینو به شما بستگی به شما دارد - من شخصاً تصمیم گرفتم خود را به عنوان "سپر" به قول خود تبدیل کنم. برای ساخت سپر ، سرصفحه های زن را روی تخته وروارد لحیم کردم تا با Pro Micro مطابقت داشته باشد ، سپس ریل +5v و GND را در انتهای مخالف اضافه کردم. من از سیم جامپر برای اتصال +5v به ریل 5v فعلی خود استفاده کردم و همین کار را برای GND انجام دادم. سپس مقاومتهای 4x 100k خود را اضافه کردم ، یک سر آنها برای همه +5v متصل است ، و سپس طرف دیگر به ترتیب به A0 ، A1 ، A2 و A3 متصل می شود. سپس پایانه های پیچ را به پین های آنالوگ A0 ، A1 ، A2 و A3 و همچنین پایه های 2 (SDA) ، 3 (SCL) و 4 اضافه کردم.

سیم کشی خود را اندازه بگیرید و به طول مناسب برش دهید. من ابتدا با LED های پیکسلی WS2812 شروع کردم - اولین LED WS2812 به +5v از آردوینو ، GND از آردوینو متصل می شود ، و DIN به پین 4 متصل می شود. پس از این ، 3 باقی مانده با هم زنجیر می شوند و تمام 5v> 5v را به زنجیر می کشند. GND> GND پین ها و DOUT از یک پیکسل ، به DIN بعدی متصل می شود. پس از لحیم کاری ، آنها را به آرامی به سوراخ های مربع در بالا فشار دهید و چسب حرارتی را در محل خود قرار دهید و همچنین قسمت عقب را از هرگونه اتصالات یا شورت های تصادفی محافظت کنید.

بعد از LED ها ، سوکت های جک گیتار را پیچ کردم. یک پین از هر یک به GND متصل می شود ، و سپس پین دوم هر یک به ترتیب به A0 ، A1 ، A2 و A3 متصل می شود. بنابراین این سوکت 1 ، A0 ، سوکت 2 تا A1 ، سوکت 3 تا A2 و سوکت 4 تا A3 است.

سپس 4 سیم را به اتصالات OLED لحیم کردم و تا جایی که امکان داشت لحیم اضافی را برش دادم. شما می خواهید سیم های خود را از پشت صفحه متصل کنید ، بنابراین به جلوی صفحه لحیم می شوید.

به پین ها توجه کنید! برخی از OLED ها دارای GND در خارج ، سپس VCC ، برخی دارای VCC در خارج و سپس GND هستند

پس از لحیم کاری و تا حد امکان اتصال لحیم کاری را صاف یا مسطح کنید ، صفحه را به آرامی به محل آن فشار دهید. این از نظر طراحی کمی تنگ است ، اما توجه داشته باشید که تحمل های مختلف چاپ ممکن است بر این تأثیر بگذارد ، بنابراین ممکن است مجبور شوید پس از پردازش جزئی ، آن را مناسب کنید. هنگامی که در محل قرار گرفتید ، مقداری چسب حرارتی را در هر 4 گوشه قرار دهید تا در جای خود ثابت بماند.

همه چیز را به هم وصل کنید تا با شماتیک و تصاویر مطابقت داشته باشد ، و وقتی خوشحال شدید ، می توانید Pro Micro و RTC Clock را نیز در جای خود بچسبانید و سپس افزونه USB را به Pro Micro وصل کنید.

من از یک افزونه میکرو USB استفاده کردم تا الف) از USB برای تأمین برق استفاده شود ، اما بیشتر ، ب) به طوری که در صورت نیاز بدون جدا کردن همه چیز امکان برنامه ریزی مجدد Pro Micro وجود داشت.

هنگامی که خوشحال شدید ، با استفاده از 4 پیچ مورد را به هم وصل کنید

مرحله 4: پلاگین ها

پلاگین ها!
پلاگین ها!
پلاگین ها!
پلاگین ها!
پلاگین ها!
پلاگین ها!

روش کار این است که ، برای همه اهداف ، بخشی از طراحی به عنوان "اهم متر" عمل می کند. اهم متر وسیله ای برای اندازه گیری مقاومت الکتریکی است. اکثر مولتی مترها این عملکرد را دارند که به وسیله آن مقیاس را انتخاب کرده و سپس مقاومت را اندازه گیری می کنید تا مقدار آن را بیابید. اصل کار این است که شما یک مقاومت KNOWN را به +ve وصل کنید ، سپس به یک مقاومت ناشناس متصل می شود که به -ve متصل می شود. اتصال بین 2 مقاومت به پین آنالوگ آردوینو متصل می شود تا بتواند ولتاژ را بخواند و مقاومت را محاسبه کند.

این دستگاه مانند یک تقسیم کننده ولتاژ عمل می کند و مقاومت یک مقاومت ناشناخته را محاسبه می کند.

به عنوان شبکه تقسیم ولتاژ مقاومت R1 و R2 ،

Vout = Vin * R2 / (R1 + R2) - ما از 100k برای مقاومت (R1) شناخته شده خود استفاده می کنیم. این به ما "افت ولتاژ" می دهد

از این رو ، اکنون می توانیم مقاومت مقاومت ناشناخته (R2) را محاسبه کنیم ،

R2 = Vout * R1 / (Vin - Vout) - جایی که R1 مقاومت 100k (100، 000 اهم) ما است

با استفاده از یک مقاومت متفاوت در هر جک پلاگین که می خواهید استفاده کنید ، می توانید کد را بسته به جک مورد استفاده تنظیم کنید.

من از 4 پریز جک استفاده می کنم. من ترجیح دادم استفاده کنم:

مقاومت شناخته شده (x4) - 100 هزار

پلاگین جک 1 - 5.6k

پلاگین جک 2 - 10 هزار

پلاگین جک 3 - 22k

پلاگین جک 4 - 39 هزار

البته می توانید این مورد را گسترش دهید و به تعداد دلخواه کدگذاری کنید.

مرحله 5: کد

کد
کد

در مرحله اول ، شما به Arduino IDE نیاز دارید که از اینجا موجود است:

همچنین باید مطمئن شوید که چند کتابخانه آردوینو نیز دارید:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (اختیاری):

نکته ای در مورد انتخاب برد مناسب "آردوینو". در ابتدا من این پروژه را با آردوینو نانو شروع کردم ، زیرا قیمت آنها در انگلستان 3 تا 4 پوند بسیار ارزان است ، یا اگر از AliExpress خرید می کنید 1.50 پوند (اما برای 30-50 روز انتظار مهم نیست.) مشکل نانو این است که SRAM آن 2 کیلوبایت (2048 بایت) است. این طرح از 1728 بایت حافظه پویا با متغیرهای جهانی استفاده می کند. این 84 درصد از SRAM است و فقط 320 بایت برای متغیرهای محلی آزاد است. این ناکافی بود و باعث می شد نانو قفل شده و یخ بزند.

Pro Micro (Leonardo) دارای 2.5K SRAM (2560 بایت) است ، به این معنی که 694 بایت رایگان برای متغیرهای محلی وجود دارد (این طرح از 72٪ SRAM Pro Micro استفاده می کند). تا کنون این برای استفاده من کاملاً مناسب و پایدار بوده است. اگر قصد استفاده از جک های متعدد را دارید ، ممکن است بخواهید از چیزی با SRAM بیشتر استفاده کنید.

در مورد ذخیره سازی فلش ، این طرح از 88٪ (25252 بایت) از 30k استفاده می کند (ATMega328p [Nano] و ATMega32u4 [Pro Micro] هر دو 32k دارند ، اما 2k برای بوت لودر محفوظ است)

من در طول این سالها صدها طرح آردوینو نوشته ام ، اما من یک سرگرم کننده هستم - بنابراین به خاطر داشته باشید که برخی از قسمت های کد ممکن است ناکارآمد باشد یا سناریوهای "روشهای بهتری برای انجام این کار" وجود داشته باشد. گفته می شود ، این برای من کاملاً کار می کند و من از آن راضی هستم. من از کتابخانه هایی استفاده می کنم که باید در بیشتر تابلوها کار کنند ، خواه AVR (اصلی ترین Arduino) یا SAMD21 (من تعداد کمی دستگاه Cortex M0 دارم)

من می خواستم یک گرافیک متفاوت بر اساس جک مورد استفاده نیز نمایش دهم. اگر می خواهید خودتان این کار را انجام دهید ، این یک راهنمای ساده درخشان در مورد نحوه ایجاد آرایه C برای استفاده از تصاویر با این صفحه است:

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

مطمئن شوید که از PROGMEM برای گرافیک خود استفاده می کنید. به عنوان مثال:

char ثابت بدون علامت YOUR_IMAGE_NAME PROGMEM = {}

طبق طراحی ، صفحه بعد از 5 ثانیه "تایموت" می شود و به نمایش زمان باز می گردد.

بیشتر تنظیمات را می توانید در Settings.h پیدا کنید ، به طور خاص ، نام فیش های مربوطه در اینجا کدگذاری شده است:

#PLUG1 "کلید" را تعریف کنید

#تعریف 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 متصل است.

توصیه می شود مقاومت 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 اهم و 7000 اهم باشد ، ما فرض می کنیم که شما از یک مقاومت 5.6k استفاده کرده اید و بنابراین کد این را به عنوان جک پلاگین 1 نشان می دهد. اگر مقاومت اندازه گیری شده بین 8000 اهم و 12000 اهم ، فرض بر این است که این یک مقاومت 10k است و Jack Plug 2 و غیره است.

اگر شما نیاز به انجام برخی از اشکال زدایی دارید (در "تولید" نظر ندهید زیرا اشکال زدایی سریال از قوچ گرانبها استفاده می کند) به سادگی خطوط مورد نیاز خود را در بالای تنظیمات کامنت کنید. h

//#تعریف SERIAL_DEBUG

//#تعریف WAIT_FOR_SERIAL

برای اظهارنظر ، // // را به سادگی حذف کنید. برای اظهار نظر مجدد در مورد خط ، // را دوباره به جلوی خط اضافه کنید.

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]) ؛ برای (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 به شما می گوید که مقاومت آخرین جک وارد شده در اهم چقدر است. بنابراین می توانید از این طرح به عنوان اهم متر برای بررسی مقاومت جک پلاگین استفاده کنید.

مرحله ششم: یادداشت ها

من فکر می کنم همه چیز را پوشش داده ام ، اما لطفاً نظر بدهید و من تا آنجا که بتوانم تمام تلاشم را می کنم تا بخوانم و پاسخ دهم:)

عذرخواهی برای ویدئوی تا حدودی ضعیف - من سه پایه ، تنظیم مجدد یا فضای کاری مناسب ندارم ، بنابراین فیلم برداری شد (بد) تلفن را در یک دست گرفته و سعی می کرد آن را با دست دیگر نشان دهد.

ممنون که خواندید.

توصیه شده: