विषयसूची:

मेरा कैम दलाल: 14 कदम (चित्रों के साथ)
मेरा कैम दलाल: 14 कदम (चित्रों के साथ)

वीडियो: मेरा कैम दलाल: 14 कदम (चित्रों के साथ)

वीडियो: मेरा कैम दलाल: 14 कदम (चित्रों के साथ)
वीडियो: सामने अब मौत का कुआं है तो क्या हर हर गीज पीछे नहीं हट सकता | Alif Laila 2024, नवंबर
Anonim
दलाल मेरा कैम
दलाल मेरा कैम

यहीं से यह परियोजना आ रही है।

कुछ समय पहले मैंने कुछ टाइमलैप्स फिल्माने के बारे में सोचा था। "कैसे?" मैंने अपने आप से पूछा? पहला जवाब था "ठीक है.. आप बस कुछ फिल्माते हैं और इसे गति देते हैं और बस हो गया"। लेकिन क्या यह वाकई इतना आसान है? सबसे पहले, मैं उसके लिए अपने डीएसएलआर का उपयोग करना चाहता हूं, और मेरे Nikon D3100 में वीडियो फिल्माने के लिए 10 मिनट की समय सीमा है। दूसरा, भले ही मेरे पास वीडियो फिल्माने की कोई समय सीमा वाला कैमरा न हो, क्या होगा यदि मैं वास्तव में एक लंबा टाइमलैप्स बनाना चाहता हूं, जैसे कि 12 घंटे लंबा? मैं 12 घंटे लंबा 1080p वीडियो बनाता हूं। मुझे संदेह है कि बैटरी इतनी लंबी चलेगी और, यह बहुत व्यावहारिक नहीं है, है ना? ठीक है, "वीडियो बनाने का विचार" पार कर रही हूँ। खैर, फिर तस्वीरें हैं। एक निश्चित अंतराल पर कैमरे पर एक तस्वीर लेना और सैकड़ों छवियों के साथ समाप्त होना, जिन्हें मैं वीडियो बनाने के लिए सॉफ़्टवेयर के माध्यम से संसाधित करता हूं..?

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

चरण 1: लेकिन.. कैसे?

मगर कैसे?
मगर कैसे?

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

Nikon को पहले से ही पता था कि आप रिमोट और अन्य एक्सेसरीज़ चाहते हैं और उन्होंने कहा "ठीक है, हम उन्हें वह सब देंगे, लेकिन हम एक विशेष पोर्ट बनाएंगे ताकि हम उन एक्सेसरीज़ पर अधिक पैसा कमा सकें", आपको शर्म आती है Nikon. वह बंदरगाह (मेरे मामले में) एमसी-डीसी 2 कहलाता है, और इस पर अपना हाथ पाने का सबसे सस्ता तरीका ईबे पर 2-3 डॉलर के लिए रिमोट शटर रिलीज खरीदना है और केवल केबल का उपयोग करना है।

* कुछ अन्य कैमरों, जैसे कैनन, में समान उपयोग के लिए एक साधारण 3.5 मिमी हेड फोन्स जैक बनाया गया है ताकि आप पुराने स्पीकर/हेडफ़ोन से कुछ केबल का उपयोग कर सकें।

चरण 2: कैमरा को ट्रिगर करना सीखना

Image
Image
ट्रिगर करने के तरीके
ट्रिगर करने के तरीके

वैसे भी, यहाँ सौदा है, बंदरगाह में 3 कनेक्शन होंगे जो हमारी रुचि के होंगे (ग्राउंड, फोकस और शटर) और आपके पास नए खरीदे गए रिमोट शटर के आपके केबल के अंत में होंगे जिन्हें आपने अभी नष्ट कर दिया है। वे तीन कनेक्शन हमारे लिए महत्वपूर्ण हैं क्योंकि अगर हम ग्राउंड को छोटा करते हैं और फोकस करते हैं तो कैमरा ठीक उसी तरह फोकस करेगा जैसे आप फोकस बटन दबा रहे हैं और फिर, जब वह कनेक्शन बना रहता है, तो आप ग्राउंड और शटर को छोटा कर सकते हैं और कैमरा एक तस्वीर लेगा जैसे कि आपने कैमरे का शटर बटन दबाया हो।

आप केबल के अंत में लाइव तारों को सचमुच छोटा करके इसका परीक्षण कर सकते हैं कि कौन सा तार कौन सा है। एक बार जब आप ऐसा कर लेते हैं, तो आसानी से पहचानने के लिए, हम उन्हें इस तरह रंग देंगे:

जमीन = काला; फोकस = सफेद; शटर = लाल।

ठीक है, अब हमें अपने लिए ऐसा करने के लिए Arduino को सिखाने की आवश्यकता है।

चरण 3: ट्रिगर करने के तरीके

Image
Image

बाहरी दुनिया में भेजने के लिए हम एक Arduino को सबसे सरल बात बता सकते हैं कि यह डिजिटल आउटपुट सिग्नल है। यह संकेत या तो उच्च (तार्किक '1') या कम (तार्किक '0') हो सकता है, इसलिए इसका नाम "डिजिटल" है, या जब इसे इसके मूल अर्थ में परिवर्तित किया जाता है: तार्किक उच्च के लिए 5V, और तार्किक निम्न के लिए 0V।

हमें इस डिजिटल सिग्नल का क्या करना है? हम उन्हें केवल कैमरे से कनेक्ट नहीं कर सकते हैं और कैमरे से यह उम्मीद कर सकते हैं कि हम क्या चाहते हैं। जैसा कि हमने देखा है, हमें प्रतिक्रिया करने के लिए कैमरे पर कनेक्शन को छोटा करने की आवश्यकता है, इसलिए हमें कुछ घटकों को चलाने के लिए Arduino के डिजिटल सिग्नल का उपयोग करने की आवश्यकता है जो हमारे द्वारा भेजे जाने वाले इन विद्युत सिग्नल के आधार पर उनके टर्मिनलों को छोटा कर सकते हैं।. *जिस तरह से मैंने इसका वर्णन किया है, आप सोच रहे होंगे "आह, रिले!" लेकिन नहीं नहीं। रिले काम करेगा लेकिन हम इतनी छोटी धाराओं से निपट रहे हैं कि हम अर्धचालक के काले जादू का आसानी से उपयोग कर सकते हैं।

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

तो हम इस तरह से ऑप्टोकॉप्लर का उपयोग करेंगे: हम अपने Arduino को एक डिजिटल हाई भेजने के लिए कहते हैं यदि यह डिजिटल पिन है, तो वह सिग्नल व्यावहारिक रूप से 5V है जो ऑप्टोकॉप्लर के अंदर एलईडी चलाएगा और इसके अंदर का फोटोट्रांसिस्टर "छोटा" होगा। यह आउटपुट टर्मिनल है जब यह उस प्रकाश का पता लगाता है, और इसके विपरीत, यह इसके टर्मिनलों को "अलग" करेगा क्योंकि जब हम Arduino के माध्यम से एक डिजिटल LOW भेजते हैं तो LED से कोई प्रकाश नहीं होता है।

व्यावहारिक रूप से, इसका अर्थ है: Arduino के डिजिटल पिनों में से एक ऑप्टोकॉप्लर के ANODE पिन से जुड़ा होता है, Arduino का GND CATHODE से जुड़ा होता है, कैमरा का GND EMITTER से जुड़ा होता है और FOCUS (या SHUTTER) COLLECTOR से जुड़ा होता है। इन पिनों को खोजने के लिए आप जिस ऑप्टोकॉप्लर का उपयोग कर रहे हैं उसकी डेटा शीट देखें। मैं ४एन३५ का उपयोग कर रहा हूं, इसलिए यदि आप ऑप्टोकॉप्लर के अंदर क्या होता है, इस बारे में वास्तव में परवाह नहीं करते हैं, तो आप मेरी योजना का आँख बंद करके अनुसरण कर सकते हैं। कहने की जरूरत नहीं है, हमें इनमें से दो की आवश्यकता होगी, क्योंकि हमें कैमरे के फोकस और शटर दोनों को नियंत्रित करने की आवश्यकता है।

चूंकि हमने देखा कि यह कैसे काम करता है, आउटपुट पर एक फोटोट्रांसिस्टर के साथ, हम इसे केवल एक साधारण एनपीएन ट्रांजिस्टर के साथ क्यों नहीं आजमाते हैं। इस बार, हम ट्रांजिस्टर के आधार पर डिजिटल सिग्नल को सीधे (रेसिस्टर के आर-पार) लाएंगे और कैमरा और Arduino के GND दोनों को एमिटर और कैमरे के फोकस/शटर को ट्रांजिस्टर के कलेक्टर से कनेक्ट करेंगे।

फिर से, हमें इनमें से दो की आवश्यकता होगी क्योंकि हम दो संकेतों को नियंत्रित कर रहे हैं। मैं BC547B का उपयोग कर रहा हूं और आप मूल रूप से इसके लिए किसी भी NPN का उपयोग कर सकते हैं क्योंकि हम जिस करंट को नियंत्रित कर रहे हैं वह एक मिलीएम्प है।

ये दोनों घटक काम करेंगे, लेकिन ऑप्टोकॉप्लर चुनना शायद बेहतर विचार है क्योंकि यह सुरक्षित है। ट्रांजिस्टर तभी चुनें जब आप जानते हों कि आप क्या कर रहे हैं।

चरण 4: ट्रिगरिंग के लिए कोड लिखना

Image
Image
ट्रिगरिंग के लिए कोड लिखना
ट्रिगरिंग के लिए कोड लिखना

जैसा कि हमने पहले कहा, हम सिग्नलिंग के लिए Arduino के डिजिटल पिन का उपयोग करेंगे। Arduino इन दोनों का उपयोग इससे डेटा पढ़ने, या इसे लिखने के लिए कर सकता है, इसलिए सबसे पहले हमें सेटअप () फ़ंक्शन में निर्दिष्ट करने की आवश्यकता है कि हम आउटपुट के लिए Arduino के दो डिजिटल पिन का उपयोग करेंगे:

पिनमोड (FOCUS_PIN, OUTPUT);

पिनमोड (SHUTTER_PIN, OUTPUT);

जहां FOCUS_PIN और SHUTTER_PIN को या तो "#define NAME मान" के साथ परिभाषित किया जा सकता है या सेटअप() फ़ंक्शन से पहले एक int के रूप में परिभाषित किया जा सकता है क्योंकि आप पिन बदल सकते हैं, इसलिए बाद में पूरे कोड के बजाय केवल एक स्थान पर मान को बदलना आसान है।

अगली चीज़ जो हम करेंगे वह एक ट्रिगर () फ़ंक्शन लिखना है जो इसे चलाने पर ठीक वैसा ही करेगा। मैं सिर्फ कोड के साथ एक तस्वीर शामिल करूंगा। आपको केवल यह जानने की आवश्यकता है कि पहले हम एक निश्चित अवधि के लिए FOCUS_PIN को उच्च पर रखते हैं क्योंकि हमें उस विषय पर ध्यान केंद्रित करने के लिए कैमरे की प्रतीक्षा करने की आवश्यकता होती है जिसे हम इंगित कर रहे हैं और फिर एक क्षण के लिए (जबकि FOCUS_PIN अभी भी उच्च है)) केवल चित्र लेने के लिए SHUTTER_PIN को हाई पर रखें।

मैंने फोकसिंग को छोड़ने की क्षमता भी शामिल की क्योंकि इसकी कोई आवश्यकता नहीं होगी यदि हम किसी ऐसी चीज़ की टाइमलैप्स शूटिंग कर रहे हैं जो समय के साथ कैमरे से दूरी नहीं बदल रही है।

चरण 5: कक्षा अंतराल {};

Image
Image
Arduino के माध्यम से अंतराल में हेरफेर
Arduino के माध्यम से अंतराल में हेरफेर

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

शून्य लूप () {

देरी (अंतराल); ट्रिगर (); }

मैं इस अंतराल को बदलने में सक्षम होना चाहता हूं, मान लीजिए, 5 सेकंड से लेकर 20-30 मिनट तक सभी तरह से। और यहां समस्या है, अगर मैं इसे 5s से 16s या बीच में कुछ भी बदलना चाहता हूं तो मैं 1s वेतन वृद्धि का उपयोग करूंगा, जहां मेरे प्रत्येक अनुरोध के लिए अंतराल को बढ़ाने के लिए, अंतराल 1s के लिए बढ़ेगा। यह बहुत अच्छा है, लेकिन क्या होगा अगर मैं 5s से 5min तक जाना चाहता हूँ? यह मुझे 1s वेतन वृद्धि में 295 अनुरोधों को ले जाएगा, इसलिए मुझे स्पष्ट रूप से वृद्धि मूल्य को कुछ बड़ा करने की आवश्यकता है, और मुझे यह परिभाषित करने की आवश्यकता है कि वेतन वृद्धि को बदलने के लिए कौन सा सटीक अंतराल मान (दहलीज) है। मैंने इसे लागू किया:

5s-60s: 1s वेतन वृद्धि; 60s-300s: 10s वेतन वृद्धि; 300s-3600s: 60s वेतन वृद्धि;

लेकिन मैंने इस वर्ग को समायोज्य होने के लिए लिखा है ताकि आप अपनी खुद की थ्रेसहोल्ड और वेतन वृद्धि को परिभाषित कर सकें (सब कुछ.h फ़ाइल में टिप्पणी की गई है ताकि आप जान सकें कि कौन से मूल्यों को बदलना है)।

मैंने अंतराल में हेरफेर करने का जो उदाहरण दिया है वह स्पष्ट रूप से एक पीसी पर किया गया है, अब हमें इसे Arduino पर ले जाने की आवश्यकता है। यह पूरी कक्षा, अंतराल, एक हेडर फ़ाइल के अंदर रखी जाती है जिसका उपयोग हमारी कक्षा/कार्यों की घोषणाओं और परिभाषाओं को संग्रहीत करने के लिए किया जाता है (वास्तव में नहीं, लेकिन यह इस उदाहरण में बिना किसी नुकसान के किया जा सकता है)। इस हेडर फ़ाइल को हमारे arduino कोड में पेश करने के लिए हम "#include"Interval.h" "(फाइलें एक ही निर्देशिका में होनी चाहिए) का उपयोग करते हैं, जो यह सुनिश्चित करता है कि हम अपने मुख्य कोड में हेडर फ़ाइल में परिभाषित कार्यों का उपयोग कर सकते हैं।

चरण 6: Arduino के माध्यम से अंतराल में हेरफेर करना

Image
Image
Arduino के माध्यम से अंतराल में हेरफेर
Arduino के माध्यम से अंतराल में हेरफेर
Arduino के माध्यम से अंतराल में हेरफेर
Arduino के माध्यम से अंतराल में हेरफेर

अब हम अंतराल के मूल्य को बदलने में सक्षम होना चाहते हैं, या तो इसे बढ़ाएं या घटाएं। तो यह दो चीजें हैं इसलिए हम दो डिजिटल संकेतों का उपयोग करेंगे जिन्हें दो बटनों द्वारा नियंत्रित किया जाएगा। हम बटनों को सौंपे गए डिजिटल पिन पर मूल्यों को बार-बार पढ़ेंगे और उन मानों को फ़ंक्शन चेकबटन (इंट, इंट) में पार्स करेंगे; जो "ऊपर" बटन दबाए जाने पर अंतराल को बढ़ा देगा और बटन "नीचे" होने पर अंतराल को कम कर देगा। साथ ही, यदि दोनों बटनों को दबाया जाता है तो यह वेरिएबल फोकस के मान को बदल देगा जो यह नियंत्रित करता है कि ट्रिगर करते समय फोकस करना है या नहीं।

कोड का भाग ((मिलिस () - prevBtnPress) >= debounceTime) का उपयोग डिबगिंग के लिए किया जाता है। जिस तरह से मैंने इसे लिखा है, इसका मतलब है कि मैं बूलियन वेरिएबल btnPressed के साथ पहला बटन प्रेस रजिस्टर करता हूं और उस समय को याद रखता हूं। मैं एक निश्चित समय (डेब्यूटाइम) की प्रतीक्षा करता हूं और यदि बटन अभी भी दबाया जाता है तो मैं प्रतिक्रिया करता हूं। यह बटन के हर दूसरे प्रेस के बीच "रोकें" भी बनाता है ताकि यह कई प्रेस से बचा जा सके जहां कोई नहीं है।

और अंत में, इसके साथ:

अगर ((मिली () - prevTrigger) / १०००> = अंतराल। getVal ()) {

prevTrigger = मिली (); ट्रिगर (); }

हम सबसे पहले जांचते हैं कि अंतिम ट्रिगरिंग (prevTrigger) और वर्तमान समय (मिली ()) के बीच का समय (सब कुछ 1000 से विभाजित है क्योंकि यह मिलीसेकंड में है और अंतराल सेकंड में है) अंतराल के बराबर या उससे अधिक है हम चाहते हैं, और अगर यह है तो हम वर्तमान समय को याद करते हैं क्योंकि पिछली बार हमने कैमरे को चालू किया था और फिर इसे ट्रिगर किया था।

इस पूर्ण के साथ, हमने मूल रूप से एक इंटरवलोमीटर बनाया, लेकिन हम बहुत दूर हैं। हम अभी भी इंटरवलोमीटर का मान नहीं देखते हैं। यह केवल सीरियल मॉनिटर पर प्रदर्शित होता है और हम हमेशा कंप्यूटर के पास नहीं रहेंगे इसलिए अब हम कुछ ऐसा लागू करेंगे जो हमें अंतराल दिखाएगा जैसे ही हम इसे बदलते हैं।

चरण 7: अंतराल प्रदर्शित करना

Image
Image
अंतराल प्रदर्शित करना
अंतराल प्रदर्शित करना
अंतराल प्रदर्शित करना
अंतराल प्रदर्शित करना
अंतराल प्रदर्शित करना
अंतराल प्रदर्शित करना

यह वह जगह है जहां हम प्रदर्शन पेश करते हैं। मैंने 4 अंकों के मॉड्यूल का उपयोग किया जो TM1637 द्वारा संचालित है क्योंकि मुझे इसे केवल समय प्रदर्शित करने के लिए उपयोग करने की आवश्यकता है और कुछ नहीं। Arduino के लिए बनाए गए इन मॉड्यूल का उपयोग करने का सबसे आसान तरीका उनके लिए पहले से बने पुस्तकालयों का उपयोग करना है। Arduino साइट पर TM1673 चिप का वर्णन करने वाला एक पृष्ठ और सुझाई गई लाइब्रेरी का लिंक है। मैंने इस पुस्तकालय को डाउनलोड किया है और दो तरीके हैं जिनसे आप इन पुस्तकालयों को Arduino IDE से परिचित करा सकते हैं:

  1. Arduino सॉफ़्टवेयर से स्केच> लाइब्रेरी शामिल करें>. ZIP लाइब्रेरी जोड़ें और आपके द्वारा अभी डाउनलोड की गई.zip फ़ाइल का पता लगाएं।
  2. आप वह कर सकते हैं जो Arduino मैन्युअल रूप से करता है और लाइब्रेरी को उस फ़ोल्डर में अनज़िप करें जिसमें Arduino विंडोज़ पर पुस्तकालयों को संग्रहीत करता है: C:\Users\Username\Documents\Arduino\libraries\।

एक बार जब आप पुस्तकालय को शामिल कर लेते हैं तो आपको "रीडमी" फ़ाइल पढ़नी चाहिए जिसमें आपको विभिन्न कार्यों का सारांश मिलेगा। कभी-कभी यह पर्याप्त नहीं होता है इसलिए आप थोड़ा और गहराई में जाना चाहेंगे और हेडर फाइलों का पता लगाएंगे जिसमें आप देख सकते हैं कि फ़ंक्शन कैसे कार्यान्वित किए जाते हैं और इनपुट तर्क के रूप में उन्हें क्या चाहिए। और निश्चित रूप से यह महसूस करने का सबसे अच्छा तरीका है कि एक पुस्तकालय क्या करने में सक्षम है, आमतौर पर एक उदाहरण प्रदान करता है जिसे आप Arduino सॉफ़्टवेयर से File>Examples>LibraryName>ExampleName के माध्यम से चला सकते हैं। यह पुस्तकालय एक उदाहरण प्रदान करता है जो मैं आपको अपने डिस्प्ले पर चलाने की सलाह देता हूं, यह देखने के लिए कि आपका डिस्प्ले ठीक से काम कर रहा है या नहीं और मैं आपको उदाहरण में देखे गए कोड को ट्विक करने के लिए प्रोत्साहित करता हूं और अपने लिए देखता हूं कि प्रत्येक फ़ंक्शन क्या करता है और डिस्प्ले कैसे प्रतिक्रिया करता है यह। मैंने ऐसा किया है और यही मुझे पता चला है:

यह प्रत्येक अंक (0bB7, B6, B5, B4, B3, B2, B1, B0) के लिए 8 बिट्स के 4 अहस्ताक्षरित पूर्णांकों का उपयोग करता है। और उनमें से प्रत्येक बिट B6-B0 का उपयोग एक निश्चित अंक के प्रत्येक खंड के लिए किया जाता है और यदि बिट 1 है तो इसके द्वारा नियंत्रित खंड रोशनी करता है। इन पूर्णांकों को डेटा नामक एक सरणी में संग्रहीत किया जाता है। इन बिट्स को डिस्प्ले पर सेट करना display.setSegments(data) द्वारा पूरा किया जाता है; या आप स्वाभाविक रूप से किसी भी अंक को विशेष रूप से एक्सेस कर सकते हैं और उन्हें मैन्युअल रूप से सेट कर सकते हैं (डेटा [0] = 0b01111001) या आप फ़ंक्शन का उपयोग कर सकते हैं encodeDigit(int); और आपके द्वारा भेजे गए अंक को बिट्स (डेटा [0] = डिस्प्ले। एनकोडडिजिट (3)) के अनुसार परिवर्तित करें। कोलन को सक्रिय करने के लिए बिट बी7 का उपयोग केवल दूसरे अंक या डेटा[1] द्वारा किया जाता है।

चूँकि मैंने इंटरवल क्लास विच में फंक्शन लिखे हैं, जिन्हें मैं M1M0: S1S0 के रूप में अंतराल के कुछ अंक प्राप्त कर सकता हूँ, जहाँ M मिनटों के लिए और S सेकंड के लिए है, यह स्वाभाविक है कि मैं encodeDigitFunction(int) का उपयोग करता हूं; इस तरह के अंतराल को प्रदर्शित करने के लिए:

डिस्प्लेइंटरवल () {

डेटा [0] = डिस्प्ले। एनकोडडिजिट (अंतराल। गेटएम 1 ()); डेटा [1] = 0x80 | display.encodeDigit(interval.getM0()); डेटा [२] = डिस्प्ले। एनकोडडिजिट (अंतराल। गेटएस १ ()); डेटा [3] = डिस्प्ले। एनकोडडिजिट (अंतराल। getS0 ()); डिस्प्ले.सेट सेगमेंट (डेटा); }

अब, जब भी मुझे डिस्प्ले पर अंतराल प्रदर्शित करने की आवश्यकता होती है, तो मैं डिस्प्लेइंटरवल () फ़ंक्शन को कॉल कर सकता हूं।

* डेटा पर "0x80 | …" नोट करें[1]। इसका उपयोग यह सुनिश्चित करने के लिए किया जाता है कि डेटा का बिट B7 [1] हमेशा 1 होता है इसलिए कोलन रोशनी करता है।

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

चरण 8: यह सब एक साथ रखना

यह सब एक साथ डालें
यह सब एक साथ डालें

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

मैंने एक द्वि-रंग का नेतृत्व किया, (लाल और हरा, सामान्य कैथोड) जो ट्रिगर () के दौरान हरे रंग को हल्का कर देगा और यदि फोकसिंग चालू है तो यह डिस्प्ले के साथ लाल रंग में प्रकाश करेगा और फोकस करने पर यह बंद रहेगा। बंद।

साथ ही, हम और भी छोटे Arduino, Pro Mini में माइग्रेट करेंगे।

चरण 9: एक आखिरी चीज़ जोड़ना

एक आखिरी बात जोड़ना
एक आखिरी बात जोड़ना
एक आखिरी बात जोड़ना
एक आखिरी बात जोड़ना
एक आखिरी बात जोड़ना
एक आखिरी बात जोड़ना

अभी तक.. हमने केवल एक इंटरवलोमीटर बनाया है। उपयोगी है, लेकिन हम बेहतर कर सकते हैं।

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

सबसे पहले, हम कैसे पता लगाते हैं कि हमने सेंसर संलग्न किया है?

हम जिन सेंसरों का उपयोग करेंगे / करेंगे, उन्हें सभी को तीन तारों की आवश्यकता होगी जो उन्हें arduino (Vcc, GND, सिग्नल) से जोड़ेंगे। इसका मतलब है कि हम सेंसर के लिए इनपुट जैक के रूप में 3.5 मिमी ऑडियो जैक का उपयोग कर सकते हैं। और यह हमारी समस्या का समाधान कैसे करता है? खैर, 3.5 मिमी जैक "एक स्विच के साथ" के प्रकार होते हैं जिनमें पिन होते हैं जो कनेक्टर के पिन से छोटे होते हैं यदि उनमें कोई पुरुष कनेक्टर नहीं होता है, और जब कोई कनेक्टर मौजूद होता है तो वे अलग हो जाते हैं। इसका मतलब है कि हमारे पास सेंसर की मौजूदगी के आधार पर जानकारी है। मैं चित्र में दिखाए गए अनुसार पुल-डाउन रोकनेवाला का उपयोग करूंगा (डिजिटल पिन सेंसर के बिना उच्च पढ़ेगा, और सेंसर संलग्न के साथ कम) या आप कनेक्टर के पिन को डिजिटल पिन से भी जोड़ सकते हैं जो सामान्य रूप से है जमीन से जुड़ा है और उस डिजिटल पिन को INPUT_PULLUP के रूप में परिभाषित करता है, यह किसी भी तरह से काम करेगा। इसलिए अब हमें अपने कोड में बदलाव करना होगा, इसलिए यह वह सब कुछ करता है जो हमने अभी तक लिखा है, यदि सेंसर मौजूद नहीं है, या जब डिजिटल पिन चेकिंग उच्च है। मैंने इसे भी ट्वीक किया है इसलिए यह अंतराल के बजाय डिस्प्ले पर "सेंस" दिखाता है जो इस मोड में बेकार है, लेकिन फोकसिंग अभी भी हमारे लिए प्रासंगिक है हम दोनों बटनों के प्रेस के साथ फोकसिंग को वैकल्पिक करने की कार्यक्षमता रखेंगे और लाल एलईडी के माध्यम से फोकस स्थिति दिखा रहा है।

सेंसर वास्तव में क्या करता है?

जब हम कैमरे को ट्रिगर करना चाहते हैं तो इसके लिए सिग्नल पिन पर 5V लगाना होता है। इसका मतलब है कि हमें इस पिन की स्थिति की जाँच करने के लिए Arduino के एक और डिजिटल पिन की आवश्यकता होगी और जब यह उच्च पंजीकृत हो जाता है, तो इसे केवल ट्रिगर () फ़ंक्शन को कॉल करने की आवश्यकता होती है और कैमरा एक तस्वीर को स्नैप करेगा। सबसे आसान उदाहरण, और जिसे हम परीक्षण करने के लिए उपयोग करेंगे कि क्या यह काम करता है, एक पुल-डाउन रोकनेवाला वाला एक साधारण बटन है। सेंसर के वीसीसी और सिग्नल पिन के बीच बटन संलग्न करें और सिग्नल पिन और जीएनडी के बीच एक प्रतिरोधी जोड़ें, इस तरह सिग्नल पिन जीएनडी पर होगा जब बटन दबाया नहीं जाता है क्योंकि प्रतिरोधी के माध्यम से कोई प्रवाह नहीं होता है, और जब बटन दबाया जाता है हम सिग्नल पिन को सीधे हाई पर डालते हैं और Arduino उसे पढ़ता है और कैमरे को ट्रिगर करता है।

इसके साथ ही हमने कोड लिखना समाप्त किया।

* मैं कुछ समस्याओं को नोट करना चाहूंगा जो मेरे द्वारा उपयोग किए गए ऑडियो जैक के साथ थीं। पुरुष जैक को कनेक्टर में डालते समय, GND और अन्य दो पिनों में से कोई एक कभी-कभी छोटा होता है। यह तुरंत और केवल कनेक्टर में डालते समय होता है, लेकिन यह अभी भी Arduino के लिए एक छोटा पंजीकरण करने के लिए पर्याप्त है, इसलिए Arduino बस पुनरारंभ होगा। ऐसा अक्सर नहीं होता है, लेकिन फिर भी एक खतरा हो सकता है और Arduino को नष्ट करने की संभावना है इसलिए मेरे द्वारा उपयोग किए जाने वाले कनेक्टर्स से बचें।

चरण 10: मेस युक्त

मेस युक्त
मेस युक्त
मेस युक्त
मेस युक्त
मेस युक्त
मेस युक्त
मेस युक्त
मेस युक्त

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

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

Arduino Board और डिस्प्ले स्पष्ट कारणों से सीधे PCB पर टांका लगाने के बजाय महिला पिन हेडर के माध्यम से PCB से जुड़े होते हैं। इस तरह अन्य घटकों जैसे प्रतिरोधक, ट्रांजिस्टर और यहां तक कि ऑडियो जैक के लिए डिस्प्ले के नीचे अन्य घटकों के लिए पर्याप्त जगह है।

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

हम कैमरे से कनेक्ट होने वाली केबल में प्लग करने के लिए एक और महिला ऑडियो जैक भी लगाएंगे। इस तरह बोर्ड अधिक बहुमुखी हो जाता है क्योंकि इस तरह से हम अन्य कैमरों के साथ अन्य कनेक्टर्स से कनेक्ट करने में सक्षम होंगे।

चरण 11: सेंस0rs

Image
Image
सेंस0rs
सेंस0rs

आइए सेंसर को लागू करने के तरीकों पर विचार करें।

तो सेंसर में 5V की आपूर्ति वोल्टेज होगी, और जब हम कैमरे को ट्रिगर करना चाहते हैं तो इसे सिग्नल पिन पर डिजिटल हाई प्रदान करने में सक्षम होना चाहिए। पहली बात जो मेरे दिमाग में आई वह है मोशन सेंसर, पीर विशिष्ट होना। Arduino के लिए ऐसे मॉड्यूल बेचे जाते हैं जिन पर यह सेंसर लगा होता है और वही करते हैं जो हम चाहते हैं। वे 5V पर संचालित होते हैं और एक आउटपुट पिन होता है जिस पर वे ट्रिगर होने पर 5V डालते हैं, हमें बस इसके पिन को 3.5 मिमी ऑडियो जैक से कनेक्ट करने की आवश्यकता होती है और हम सीधे बोर्ड में प्लग कर सकते हैं। हालांकि ध्यान देने वाली एक बात यह है कि इस सेंसर को गर्म होने और ठीक से काम करना शुरू करने के लिए समय चाहिए, इसलिए जैसे ही आप इसे प्लग इन करते हैं, इसे ठीक से काम करने की अपेक्षा न करें, इसे कुछ समय दें और फिर इसे सेट करें और जो कुछ भी जीवित है उसमें चला जाए रेंज कैमरे को ट्रिगर करेगी।

चूंकि हम पहले से बने Arduino सेंसर बोर्ड की दिशा में सोच रहे हैं, एक और दिमाग में आता है, ध्वनि। इन बोर्डों को आम तौर पर इस तरह से बनाया जाता है कि उनके पास एक पिन होता है जो ध्वनि के अनुरूप मूल्य को आउटपुट करता है और दूसरा, डिजिटल एक, जो एक तार्किक उच्च आउटपुट करता है यदि ध्वनि उठाता है तो वह एक निश्चित स्तर को पार करता है। हम इस स्तर को इस तरह सेट कर सकते हैं कि सेंसर हमारी आवाज को नजरअंदाज कर देता है लेकिन एक ताली बजाता है। इस तरह, जब भी आप ताली बजाते हैं, आप कैमरा चालू कर देते हैं।

चरण 12: PoweeEeEer

पॉवीईईर
पॉवीईईर
पॉवीईईर
पॉवीईईर

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

चरण 13: संलग्नक.. किंडा

संलग्नक.. थोड़े
संलग्नक.. थोड़े
संलग्नक.. थोड़े
संलग्नक.. थोड़े
संलग्नक.. थोड़े
संलग्नक.. थोड़े

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

मैंने कुछ पतले कार्डबोर्ड के साथ शीर्ष को ओवरले करके भयानक छेद को कम भयानक बना दिया जिसमें मैंने घटकों के लिए अधिक उचित छेद काट दिया और.. यह अभी भी भयानक है लेकिन मुझे लगता है कि आंख पर आसान है।

फैसला, मेरा सुझाव है कि आप इसे उन घटकों को खरीदकर करें जो बाड़े पर चढ़ते हैं, और सीधे पीसीबी पर नहीं। इस तरह आपको घटकों को रखने की अधिक स्वतंत्रता है और गलती करने के लिए कम स्थान हैं।

चरण 14: फिन

Image
Image
पंख
पंख

मैं कर चुका हूं, लेकिन यहां कुछ चीजें हैं जो मैंने अलग तरीके से की होंगी:

बेहतर गुणवत्ता वाले 3.5 मिमी ऑडियो जैक का उपयोग करें। जिन लोगों का मैंने उपयोग किया है, वे जैक को सम्मिलित करते या खींचते समय टर्मिनलों को छोटा करते हैं, जिसके परिणामस्वरूप या तो आपूर्ति कम हो जाती है और इस प्रकार Arduino को रीसेट कर दिया जाता है या यह सिर्फ नकली ट्रिगर पैदा करता है। मैंने इसे पिछले चरण में कहा है, लेकिन मैं इसे फिर से कहूंगा.. हेडर/सॉकेट के बिना Arduino बोर्ड को मिलाप न करें, यह किसी भी प्रकार की समस्या निवारण या नया कोड अपलोड करता है और इसी तरह बहुत कठिन है। मुझे यह भी लगता है कि एक एलईडी सिग्नल होना कि बात चालू है, उपयोगी होता क्योंकि मैं अक्सर बटन दबाए बिना नहीं बता सकता क्योंकि डिस्प्ले बंद हो जाता है। और आखिरी बात, एक विराम समारोह। मैं कल्पना करता हूं कि यह तब उपयोगी होता है जब उदाहरण के लिए पीर सेंसर में प्लगिंग करते समय, क्योंकि इसे गर्म होने के लिए समय चाहिए, या बस इसे अपने चारों ओर घुमाते समय इसे ट्रिगर नहीं करना चाहते हैं ताकि आप सब कुछ रोक सकें, लेकिन आप बस मोड़ भी सकते हैं कैमरे के बाहर तो.. जो भी हो।

एक और साफ-सुथरी बात यह है कि इसे तिपाई पर वेल्क्रो करना है क्योंकि इसके वहां इस्तेमाल होने की सबसे अधिक संभावना है।

टिप्पणियों में इस परियोजना के बारे में कुछ भी पूछने के लिए स्वतंत्र महसूस करें और मुझे यह जानना अच्छा लगेगा कि क्या आप इसे बनाते हैं और यह आपके लिए कैसे निकला।

सिफारिश की: