विषयसूची:

जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर: 7 कदम
जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर: 7 कदम

वीडियो: जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर: 7 कदम

वीडियो: जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर: 7 कदम
वीडियो: 5 Tool to Make with an Arduino Jack 2024, जुलाई
Anonim
Image
Image
जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर
जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर

परिचय:

यह निर्देशयोग्य मेरे Arduino आधारित गिटार जैक प्लगइन कुंजी धारक के निर्माण का विवरण देगा

यह मेरा अब तक का पहला निर्देश है, इसलिए कृपया मेरे साथ रहें क्योंकि मैं रास्ते में बदलाव / अपडेट कर सकता हूं

चरण 1: पुर्जे और उपकरण

पुर्जे और उपकरण
पुर्जे और उपकरण
पुर्जे और उपकरण
पुर्जे और उपकरण
पुर्जे और उपकरण
पुर्जे और उपकरण

अधिकांश भाग जो मैंने Amazon.co.uk या eBay से खरीदे थे, कुछ मैंने पहले ही शुरू कर दिए थे - यहाँ एक सूची है जिसकी आपको आवश्यकता होगी।

अमेज़ॅन लिंक सभी संबद्ध लिंक हैं, आप कहीं और सस्ता पा सकते हैं - मैं अमेज़ॅन प्राइम का बहुत उपयोग करता हूं, इसलिए अमेज़ॅन बस मेरे जाने के लिए हुआ।

मैं इस निर्माण को काफी कम लागत और बजट के अनुकूल रखना चाहता था। आप एक बड़ी TFT स्क्रीन का उपयोग कर सकते हैं, क्या आप चाहते हैं, साथ ही एक अलग Arduino भी। नैनो का उपयोग न करें, क्योंकि यह उच्च मेमोरी उपयोग के कारण क्रैश हो जाएगा। कोड प्रो माइक्रो की रैम का लगभग 72% उपयोग करता है और स्थिर है, लेकिन परीक्षण से, एक नैनो क्रैश और फ्रीज हो जाएगा।

(कोड चरण में अधिक विवरण।)

पार्ट्स

1x Arduino प्रो माइक्रो -

पीले और नीले रंग के डिस्प्ले के साथ 1x 0.96 OLED -

4x WS2812 'पिक्सेल' -

1x DS3231 RTC -

4x 1/4 मोनो जैक (या जितने चाहें उतने) - Amazon (गोल्ड) या Amazon (सिल्वर) या eBay.co.uk

1x मिश्रित प्रतिरोधी पैक -

4x 1/4 गिटार जैक -

1x माइक्रो यूएसबी केबल एक्सटेंशन केबल -

4x M3 स्क्रू

उपकरण और सामग्री

- सोल्डरिंग आयरन (यह वही है जिसे मैंने खरीदा था - एक TS100 - क्योंकि यह अतिरिक्त युक्तियों के साथ आया था

- सोल्डर

- हॉट ग्लू गन (https://amzn.to/2UTd9PN)

- तार (https://amzn.to/2VK2ILU)

- वायर कटर / स्ट्रिपर्स (https://amzn.to/2KzqUzp)

- ३डी प्रिंटर या ३डी प्रिंटिंग सेवा

वैकल्पिक - ये आइटम वैकल्पिक हैं, इस पर निर्भर करते हुए कि आप सब कुछ कैसे कनेक्ट करना चुनते हैं

- वेरोबार्ड / स्ट्रिपबोर्ड (https://amzn.to/2KzMFPE)

- स्क्रू टर्मिनल कनेक्टर्स (2 पोल | 3 पोल | 4 पोल)

- पीसीबी हेडर (https://amzn.to/2X7RjWf)

चरण 2: केस को 3डी प्रिंट करना

3डी प्रिंटिंग केस
3डी प्रिंटिंग केस
3डी प्रिंटिंग केस
3डी प्रिंटिंग केस
3डी प्रिंटिंग केस
3डी प्रिंटिंग केस
3डी प्रिंटिंग केस
3डी प्रिंटिंग केस

मैंने ब्लैक पीएलए+ (https://amzn.to/2X2SDtE) का उपयोग करके अपने Creality CR-10S पर मेरा प्रिंट किया।

मैंने ०.२ परत की ऊंचाई पर, २५% infill के साथ मुद्रित किया।

चरण 3: यह सब एक साथ रखना + योजनाबद्ध

यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध
यह सब एक साथ रखना + योजनाबद्ध

आप अपने Arduino को कैसे कनेक्ट करना चुनते हैं यह पूरी तरह आप पर निर्भर है - मैंने व्यक्तिगत रूप से बोलने के लिए खुद को "ढाल" बनाना चुना। ढाल बनाने के लिए, मैंने प्रो माइक्रो से मिलान करने के लिए महिला हेडर को वर्बार्ड में मिलाया है, फिर मैंने विपरीत छोर पर + 5v और GND की एक रेल जोड़ी। मैंने +5v को अपने अब के 5v 'रेल' से जोड़ने के लिए जम्पर वायर का उपयोग किया है, और GND के लिए भी ऐसा ही किया है। मैंने फिर अपने 4x 100k प्रतिरोधों को जोड़ा, एक छोर उन सभी के लिए +5v से जुड़ा, और फिर दूसरा पक्ष क्रमशः A0, A1, A2 और A3 से जुड़ता है। मैंने तब एनालॉग पिन A0, A1, A2 और A3 और पिन 2 (SDA), 3 (SCL) और 4 में स्क्रू टर्मिनल जोड़े हैं।

अपनी वायरिंग को मापें और उचित लंबाई में काटें। मैंने पहले WS2812 Pixel LED के साथ शुरुआत की - FIRST WS2812 LED Arduino से +5v से, Arduino से GND से जुड़ती है, और DIN पिन 4 से जुड़ती है। इसके बाद, शेष 3 को एक साथ जंजीर में बांध दिया जाता है, सभी 5v> 5v का पीछा करते हुए, एक पिक्सेल से GND> GND पिन और DOUT, अगले के DIN से जुड़ता है। एक बार टांका लगाने के बाद, इन्हें धीरे से ऊपर के चौकोर छेदों में दबाएं, और गर्म गोंद को जगह दें और किसी भी आकस्मिक कनेक्शन या शॉर्ट्स से पीछे की रक्षा के लिए भी।

एल ई डी के बाद, मैंने फिर गिटार जैक सॉकेट में खराब कर दिया। प्रत्येक का एक पिन GND से जुड़ता है, और फिर प्रत्येक का दूसरा पिन तदनुसार A0, A1, A2 और A3 से जुड़ता है। तो वह सॉकेट 1 से A0, सॉकेट 2 से A1, सॉकेट 3 से A2 और सॉकेट 4 से A3 तक है।

आगे मैंने OLED कनेक्शन में 4 तारों को मिलाया, और जितना संभव हो सके किसी भी अतिरिक्त सोल्डर को ट्रिम कर दिया। आप अपने तारों को स्क्रीन के पीछे से जोड़ना चाहते हैं, इसलिए आप स्क्रीन के सामने टांका लगा रहे हैं।

पिंस पर ध्यान दें! कुछ OLED में बाहर की तरफ GND, फिर VCC, कुछ में बाहर की तरफ VCC और फिर GND होती है

एक बार टांका लगाने के बाद और आप जितना संभव हो सोल्डर कनेक्शन को ट्रिम या फ़्लैट कर चुके हैं, धीरे से स्क्रीन को उसके स्थान पर दबाएं। यह डिज़ाइन के हिसाब से थोड़ा टाइट है, लेकिन ध्यान रखें कि अलग-अलग प्रिंट टॉलरेंस इसे प्रभावित कर सकते हैं और इसलिए इसे फिट करने के लिए आपको कुछ मामूली पोस्ट-प्रोसेसिंग करनी पड़ सकती है। एक बार जगह पर, इसे रखने के लिए चारों कोनों में से प्रत्येक में कुछ गर्म गोंद रखें।

योजनाबद्ध और चित्रों से मेल खाने के लिए सब कुछ कनेक्ट करें, और एक बार खुश होने के बाद, आप प्रो माइक्रो और आरटीसी घड़ी को भी गर्म गोंद कर सकते हैं, और फिर यूएसबी एक्सटेंशन को प्रो माइक्रो से कनेक्ट कर सकते हैं।

मैंने एक माइक्रो USB एक्सटेंशन का उपयोग किया ताकि a) USB का उपयोग शक्ति प्रदान करने के लिए किया जा सके, लेकिन इससे भी अधिक, b) ताकि यदि आवश्यक हो तो सब कुछ अलग किए बिना प्रो माइक्रो को फिर से शुरू करना संभव हो।

एक बार खुश होने पर, 4 स्क्रू का उपयोग करके केस को एक साथ स्क्रू करें

चरण 4: प्लग

प्लग!
प्लग!
प्लग!
प्लग!
प्लग!
प्लग!

जिस तरह से यह काम करता है, वह यह है कि, सभी उद्देश्यों और उद्देश्यों के लिए, डिजाइन का हिस्सा "ओममीटर" के रूप में काम करता है। ओममीटर विद्युत प्रतिरोध को मापने के लिए एक उपकरण है। अधिकांश मल्टीमीटर में यह फ़ंक्शन होता है जिससे आप पैमाना चुनते हैं और फिर इसका मान ज्ञात करने के लिए एक रोकनेवाला को मापते हैं। वर्किंग प्रिंसिपल यह है कि आप एक ज्ञात रोकनेवाला को + ve से जोड़ते हैं, जो तब एक UNKNOWN रोकनेवाला से जुड़ा होता है, जो -ve से जुड़ता है। 2 प्रतिरोधों के बीच का जोड़ Arduino एनालॉग पिन से जुड़ता है ताकि यह वोल्टेज को पढ़ सके और प्रतिरोध की गणना कर सके।

यह वोल्टेज डिवाइडर की तरह काम करता है और अज्ञात प्रतिरोधक के प्रतिरोध की गणना करता है।

प्रतिरोधों R1 और R2 के वोल्टेज विभक्त नेटवर्क के रूप में, वाउट = विन * R2 / (R1 + R2) - हम अपने ज्ञात (R1) रोकनेवाला के लिए 100k का उपयोग कर रहे हैं। यह हमें "वोल्टेज ड्रॉप" देता है

इससे अब हम अज्ञात (R2) प्रतिरोधक का प्रतिरोध ज्ञात कर सकते हैं, R2 = वाउट * R1 / (विन - वाउट) - जहाँ R1 हमारा 100k (100, 000 ओम) अवरोधक है

प्रत्येक प्लग जैक में एक अलग रोकनेवाला का उपयोग करके आप उपयोग करना चाहते हैं, फिर आप उपयोग में जैक पर निर्भर कोड को तदनुसार समायोजित कर सकते हैं।

मैं 4 जैक प्लग का उपयोग कर रहा हूं। मैंने उपयोग करने का विकल्प चुना:

ज्ञात प्रतिरोधी (x4) - 100k

जैक प्लग 1 - 5.6k

जैक प्लग 2 - 10k

जैक प्लग 3 - 22k

जैक प्लग 4 - 39k

आप निश्चित रूप से इसका विस्तार कर सकते हैं, और जितना चाहें उतना कोड कर सकते हैं।

चरण 5: कोड

कोड
कोड

सबसे पहले, आपको यहां से उपलब्ध Arduino IDE की आवश्यकता होगी:

आपको यह भी सुनिश्चित करना होगा कि आपके पास कुछ Arduino लाइब्रेरी भी हैं:

Adafruit NeoPixel:

u8g2:

एडफ्रूट RTCLib:

एडफ्रूट स्लीपीडॉग (वैकल्पिक):

सही "Arduino" बोर्ड चुनने के बारे में एक नोट। मूल रूप से मैंने इस परियोजना को एक Arduino नैनो के साथ शुरू किया था, क्योंकि वे यूके में लगभग £3-£4 पर बहुत सस्ते हैं, या यदि आप AliExpress से खरीदते हैं तो £१.५० जितना कम है (लेकिन 30-50 दिन के इंतजार पर ध्यान न दें)) नैनो के साथ समस्या यह है कि इसका SRAM 2 KB (2048 बाइट्स) है। यह स्केच ग्लोबल वेरिएबल्स के साथ 1728 बाइट्स डायनामिक मेमोरी का उपयोग करता है। यह एसआरएएम का 84% है, स्थानीय चर के लिए केवल 320 बाइट मुक्त छोड़ रहा है। यह अपर्याप्त था और इससे नैनो लॉक हो जाएगी और फ्रीज हो जाएगी।

प्रो माइक्रो (लियोनार्डो) में 2.5K SRAM (2560 बाइट्स) है, जिसका अर्थ है कि स्थानीय चर के लिए 694 बाइट्स मुफ्त हैं (स्केच प्रो माइक्रो के SRAM के 72% का उपयोग करता है)। अब तक यह मेरे उपयोग के लिए पूरी तरह से पर्याप्त और स्थिर साबित हुआ है। यदि आप कई जैक प्लग का उपयोग करने का इरादा रखते हैं, तो आप अधिक SRAM के साथ कुछ का उपयोग करने पर विचार कर सकते हैं।

जहां तक फ्लैश स्टोरेज का संबंध है, यह स्केच 30k के 88% (25252 बाइट्स) का उपयोग करता है (ATMega328p [नैनो] और ATMega32u4 [प्रो माइक्रो] दोनों में 32k है, लेकिन 2k बूटलोडर के लिए आरक्षित है)

मैंने वर्षों में सैकड़ों Arduino रेखाचित्र लिखे हैं, लेकिन मैं एक शौक़ीन हूँ - इसलिए ध्यान रखें कि कोड के कुछ हिस्से अक्षम हो सकते हैं या "ऐसा करने के बेहतर तरीके" परिदृश्य हो सकते हैं। कहा जा रहा है, यह मेरे लिए पूरी तरह से काम कर रहा है और मैं इससे खुश हूं। मैंने पुस्तकालयों का उपयोग किया जो अधिकांश बोर्डों पर काम करना चाहिए, चाहे वह AVR (सबसे बुनियादी Arduino) हो या SAMD21 (मेरे पास मुट्ठी भर Cortex M0 डिवाइस हैं)

मैं भी इस्तेमाल किए गए जैक के आधार पर एक अलग ग्राफिक प्रदर्शित करना चाहता था। यदि आप अपना स्वयं का बनाना चाहते हैं, तो इस प्रदर्शन के साथ उपयोग की जाने वाली छवियों के लिए C Array कैसे बनाया जाए, इस पर एक शानदार सरल मार्गदर्शिका है:

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

अपने ग्राफिक्स के लिए PROGMEM का उपयोग करना सुनिश्चित करें। जैसे:

स्थिर स्थिरांक अहस्ताक्षरित चार Your_IMAGE_NAME PROGMEM = { }

डिज़ाइन के अनुसार, स्क्रीन 5 सेकंड के बाद "टाइमआउट" हो जाएगी और समय प्रदर्शित करने के लिए वापस आ जाएगी।

अधिकांश सेटिंग्स Settings.h में पाई जा सकती हैं, विशेष रूप से, संबंधित जैक प्लग का नाम यहां कोडित किया गया है:

# परिभाषित करें PLUG1 "कुंजी"

# परिभाषित करें PLUG2 "P2" # PLUG3 "P3" परिभाषित करें # PLUG4 "P4" परिभाषित करें # सामान्य "NA" परिभाषित करें

Variables.h. के अंदर कोड के कुछ महत्वपूर्ण भाग भी होते हैं

फ्लोट आर१=९६७००.०;

फ्लोट R2=96300.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.6k रोकनेवाला का उपयोग किया है और इस प्रकार कोड इसे जैक प्लग 1 के रूप में देखेगा। यदि मापा प्रतिरोध 8000 ओम के बीच है और 12000 ओम, धारणा यह है कि यह 10k रोकनेवाला है और जैक प्लग 2 और इसी तरह है।

यदि आपको कुछ डिबगिंग करने की आवश्यकता है ('उत्पादन' में असम्बद्ध न छोड़ें क्योंकि सीरियल डिबगिंग कीमती रैम का उपयोग करता है) बस सेटिंग्स के शीर्ष पर आवश्यक पंक्तियों को अनकम्मेंट करें।

//#SERIAL_DEBUG परिभाषित करें

//#WAIT_FOR_SERIAL परिभाषित करें

असम्बद्ध करने के लिए, सरल हटा दें //…। लाइन को वापस टिप्पणी करने के लिए, लाइन के सामने // को फिर से जोड़ें।

SERIAL_DEBUG सीरियल डिबगिंग और चीजों के उपयोग को सक्षम करता है जैसे (उदाहरण के लिए)

Serial.println (एफ ("हैलो वर्ल्ड"));

WAIT_FOR_SERIAL एक अतिरिक्त चरण है, अर्थात, जब तक आप सीरियल मॉनिटर नहीं खोलते, कोड जारी नहीं रहेगा। इससे यह सुनिश्चित करने में मदद मिलती है कि आप कोई महत्वपूर्ण सीरियल संदेश नहीं छोड़ते हैं। - इसे कभी भी सक्षम न छोड़ें

यदि आप WAIT_FOR_SERIAL को सक्षम छोड़ देते हैं, तो आप किसी भी "वास्तविक दुनिया" के वातावरण में अपने कुंजी धारक का उपयोग नहीं कर पाएंगे क्योंकि यह स्केच के मुख्य लूप में जारी रहने से पहले Arduino IDE सीरियल मॉनिटर की प्रतीक्षा में अटका रहेगा। एक बार जब आप अपनी डिबगिंग पूरी कर लेते हैं, तो सुनिश्चित करें कि आपने इस लाइन को फिर से असम्बद्ध किया है, और उत्पादन/समापन के लिए अपना स्केच फिर से अपलोड करें।

SERIAL_DEBUG विकल्प का उपयोग करते समय, मेरे कोड में निम्नलिखित शामिल हैं:

#ifdef SERIAL_DEBUG

सीरियल.प्रिंट (एफ ("एक्टिव जैक =")); सीरियल.प्रिंट्लन (ACTIVE_JACK); इंट लेन = आकार (SOCKET_1234_HAS_PLUGTYPE_X) / आकार (SOCKET_1234_HAS_PLUGTYPE_X [0]); for (int i=0;i<len;i++) { Serial.print(F("SOCKET_1234_HAS_PLUGTYPE_X[")); सीरियल.प्रिंट (i); सीरियल.प्रिंट (एफ ("] = ")); Serial.println(SOCKET_1234_HAS_PLUGTYPE_X); } सीरियल.प्रिंट्लन (); अगर (INSERTED [सॉकेट]) {Serial.print (F ("सॉकेट में प्लग करें")); सीरियल.प्रिंट (सॉकेट + 1); Serial.print(F(" का एक प्रतिरोध है: ")); Serial.println (प्रतिरोध); } #अगर अंत

अंतिम सीरियल.प्रिंट लाइन आपको बताएगी कि ओम में, अंतिम सम्मिलित जैक का प्रतिरोध क्या है। तो आप जैक प्लग के प्रतिरोध की जांच के लिए इस स्केच का उपयोग ओममीटर के रूप में भी कर सकते हैं।

चरण 6: नोट्स

मुझे लगता है कि मैंने सब कुछ कवर कर लिया है, लेकिन कृपया टिप्पणी करें और जब मैं कर सकता हूं तो मैं पढ़ने और उत्तर देने की पूरी कोशिश करूंगा:)

कुछ हद तक खराब वीडियो के लिए खेद है - मेरे पास एक तिपाई, रीकोडिंग सेटअप या बोलने के लिए उचित कार्य स्थान नहीं है इसलिए इसे एक हाथ में फोन पकड़कर और दूसरे के साथ प्रदर्शित करने का प्रयास करते हुए फिल्माया गया था।

पढ़ने के लिए धन्यवाद।

सिफारिश की: