विषयसूची:
- चरण 1: लेकिन.. कैसे?
- चरण 2: कैमरा को ट्रिगर करना सीखना
- चरण 3: ट्रिगर करने के तरीके
- चरण 4: ट्रिगरिंग के लिए कोड लिखना
- चरण 5: कक्षा अंतराल {};
- चरण 6: Arduino के माध्यम से अंतराल में हेरफेर करना
- चरण 7: अंतराल प्रदर्शित करना
- चरण 8: यह सब एक साथ रखना
- चरण 9: एक आखिरी चीज़ जोड़ना
- चरण 10: मेस युक्त
- चरण 11: सेंस0rs
- चरण 12: PoweeEeEer
- चरण 13: संलग्नक.. किंडा
- चरण 14: फिन
वीडियो: मेरा कैम दलाल: 14 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:23
यहीं से यह परियोजना आ रही है।
कुछ समय पहले मैंने कुछ टाइमलैप्स फिल्माने के बारे में सोचा था। "कैसे?" मैंने अपने आप से पूछा? पहला जवाब था "ठीक है.. आप बस कुछ फिल्माते हैं और इसे गति देते हैं और बस हो गया"। लेकिन क्या यह वाकई इतना आसान है? सबसे पहले, मैं उसके लिए अपने डीएसएलआर का उपयोग करना चाहता हूं, और मेरे Nikon D3100 में वीडियो फिल्माने के लिए 10 मिनट की समय सीमा है। दूसरा, भले ही मेरे पास वीडियो फिल्माने की कोई समय सीमा वाला कैमरा न हो, क्या होगा यदि मैं वास्तव में एक लंबा टाइमलैप्स बनाना चाहता हूं, जैसे कि 12 घंटे लंबा? मैं 12 घंटे लंबा 1080p वीडियो बनाता हूं। मुझे संदेह है कि बैटरी इतनी लंबी चलेगी और, यह बहुत व्यावहारिक नहीं है, है ना? ठीक है, "वीडियो बनाने का विचार" पार कर रही हूँ। खैर, फिर तस्वीरें हैं। एक निश्चित अंतराल पर कैमरे पर एक तस्वीर लेना और सैकड़ों छवियों के साथ समाप्त होना, जिन्हें मैं वीडियो बनाने के लिए सॉफ़्टवेयर के माध्यम से संसाधित करता हूं..?
एक ठीक विचार की तरह लग रहा था इसलिए मैंने इसे एक शॉट देने का फैसला किया। इसलिए मैं एक ऐसा उपकरण बनाना चाहता था जिसमें मैं एक समय अवधि इनपुट कर सकूं, और उस अवधि के आधार पर यह मेरे कैमरे को लगातार चालू करेगा। और जब हम इसमें हों, तो क्यों न कुछ अन्य चीजें जैसे मोशन-ट्रिगर वगैरह जोड़ें?
चरण 1: लेकिन.. कैसे?
कैसे? क्या हमारा अगला प्रश्न है जिसका उत्तर छूट गया है। टाइमिंग, ट्रिगरिंग, सेंसर और ऐसी चीजों के कारण यह कोई आश्चर्य की बात नहीं होगी कि सबसे पहले जो दिमाग में आया, वह निश्चित रूप से एक Arduino था। ठीक है, लेकिन फिर भी, हमें अपने कैमरे के शटर को चालू करना सीखना होगा। हम्म.. सर्वो हॉट बॉडी कैमरा से चिपके हुए हैं? बिल्कुल नहीं, हम चाहते हैं कि यह मौन और शक्ति कुशल हो। शक्ति कुशल - क्यों? क्योंकि मैं इसे पोर्टेबल बनाना चाहता हूं और इसमें बैटरी लगाना चाहता हूं, मैं हर बार पावर प्लग के पास नहीं रहूंगा। तो हम इसे कैसे ट्रिगर करते हैं.. यह वास्तव में बहुत आसान है।
Nikon को पहले से ही पता था कि आप रिमोट और अन्य एक्सेसरीज़ चाहते हैं और उन्होंने कहा "ठीक है, हम उन्हें वह सब देंगे, लेकिन हम एक विशेष पोर्ट बनाएंगे ताकि हम उन एक्सेसरीज़ पर अधिक पैसा कमा सकें", आपको शर्म आती है Nikon. वह बंदरगाह (मेरे मामले में) एमसी-डीसी 2 कहलाता है, और इस पर अपना हाथ पाने का सबसे सस्ता तरीका ईबे पर 2-3 डॉलर के लिए रिमोट शटर रिलीज खरीदना है और केवल केबल का उपयोग करना है।
* कुछ अन्य कैमरों, जैसे कैनन, में समान उपयोग के लिए एक साधारण 3.5 मिमी हेड फोन्स जैक बनाया गया है ताकि आप पुराने स्पीकर/हेडफ़ोन से कुछ केबल का उपयोग कर सकें।
चरण 2: कैमरा को ट्रिगर करना सीखना
वैसे भी, यहाँ सौदा है, बंदरगाह में 3 कनेक्शन होंगे जो हमारी रुचि के होंगे (ग्राउंड, फोकस और शटर) और आपके पास नए खरीदे गए रिमोट शटर के आपके केबल के अंत में होंगे जिन्हें आपने अभी नष्ट कर दिया है। वे तीन कनेक्शन हमारे लिए महत्वपूर्ण हैं क्योंकि अगर हम ग्राउंड को छोटा करते हैं और फोकस करते हैं तो कैमरा ठीक उसी तरह फोकस करेगा जैसे आप फोकस बटन दबा रहे हैं और फिर, जब वह कनेक्शन बना रहता है, तो आप ग्राउंड और शटर को छोटा कर सकते हैं और कैमरा एक तस्वीर लेगा जैसे कि आपने कैमरे का शटर बटन दबाया हो।
आप केबल के अंत में लाइव तारों को सचमुच छोटा करके इसका परीक्षण कर सकते हैं कि कौन सा तार कौन सा है। एक बार जब आप ऐसा कर लेते हैं, तो आसानी से पहचानने के लिए, हम उन्हें इस तरह रंग देंगे:
जमीन = काला; फोकस = सफेद; शटर = लाल।
ठीक है, अब हमें अपने लिए ऐसा करने के लिए Arduino को सिखाने की आवश्यकता है।
चरण 3: ट्रिगर करने के तरीके
बाहरी दुनिया में भेजने के लिए हम एक 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: ट्रिगरिंग के लिए कोड लिखना
जैसा कि हमने पहले कहा, हम सिग्नलिंग के लिए Arduino के डिजिटल पिन का उपयोग करेंगे। Arduino इन दोनों का उपयोग इससे डेटा पढ़ने, या इसे लिखने के लिए कर सकता है, इसलिए सबसे पहले हमें सेटअप () फ़ंक्शन में निर्दिष्ट करने की आवश्यकता है कि हम आउटपुट के लिए Arduino के दो डिजिटल पिन का उपयोग करेंगे:
पिनमोड (FOCUS_PIN, OUTPUT);
पिनमोड (SHUTTER_PIN, OUTPUT);
जहां FOCUS_PIN और SHUTTER_PIN को या तो "#define NAME मान" के साथ परिभाषित किया जा सकता है या सेटअप() फ़ंक्शन से पहले एक int के रूप में परिभाषित किया जा सकता है क्योंकि आप पिन बदल सकते हैं, इसलिए बाद में पूरे कोड के बजाय केवल एक स्थान पर मान को बदलना आसान है।
अगली चीज़ जो हम करेंगे वह एक ट्रिगर () फ़ंक्शन लिखना है जो इसे चलाने पर ठीक वैसा ही करेगा। मैं सिर्फ कोड के साथ एक तस्वीर शामिल करूंगा। आपको केवल यह जानने की आवश्यकता है कि पहले हम एक निश्चित अवधि के लिए FOCUS_PIN को उच्च पर रखते हैं क्योंकि हमें उस विषय पर ध्यान केंद्रित करने के लिए कैमरे की प्रतीक्षा करने की आवश्यकता होती है जिसे हम इंगित कर रहे हैं और फिर एक क्षण के लिए (जबकि FOCUS_PIN अभी भी उच्च है)) केवल चित्र लेने के लिए SHUTTER_PIN को हाई पर रखें।
मैंने फोकसिंग को छोड़ने की क्षमता भी शामिल की क्योंकि इसकी कोई आवश्यकता नहीं होगी यदि हम किसी ऐसी चीज़ की टाइमलैप्स शूटिंग कर रहे हैं जो समय के साथ कैमरे से दूरी नहीं बदल रही है।
चरण 5: कक्षा अंतराल {};
अब जब हमने कैमरे को उस तरह से ट्रिगर कर दिया है जिस तरह से हमें दो शॉट्स के बीच की समय अवधि में हेरफेर करने की कार्यक्षमता को जोड़कर इसे एक इंटरवलोमीटर में बनाने की आवश्यकता है। हम जो कर रहे हैं उसकी तस्वीर प्राप्त करने के लिए यहां कुछ आदिम कोड हैं जो हम चाहते हैं कि कार्यक्षमता प्रदर्शित करें:
शून्य लूप () {
देरी (अंतराल); ट्रिगर (); }
मैं इस अंतराल को बदलने में सक्षम होना चाहता हूं, मान लीजिए, 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 के माध्यम से अंतराल में हेरफेर करना
अब हम अंतराल के मूल्य को बदलने में सक्षम होना चाहते हैं, या तो इसे बढ़ाएं या घटाएं। तो यह दो चीजें हैं इसलिए हम दो डिजिटल संकेतों का उपयोग करेंगे जिन्हें दो बटनों द्वारा नियंत्रित किया जाएगा। हम बटनों को सौंपे गए डिजिटल पिन पर मूल्यों को बार-बार पढ़ेंगे और उन मानों को फ़ंक्शन चेकबटन (इंट, इंट) में पार्स करेंगे; जो "ऊपर" बटन दबाए जाने पर अंतराल को बढ़ा देगा और बटन "नीचे" होने पर अंतराल को कम कर देगा। साथ ही, यदि दोनों बटनों को दबाया जाता है तो यह वेरिएबल फोकस के मान को बदल देगा जो यह नियंत्रित करता है कि ट्रिगर करते समय फोकस करना है या नहीं।
कोड का भाग ((मिलिस () - prevBtnPress) >= debounceTime) का उपयोग डिबगिंग के लिए किया जाता है। जिस तरह से मैंने इसे लिखा है, इसका मतलब है कि मैं बूलियन वेरिएबल btnPressed के साथ पहला बटन प्रेस रजिस्टर करता हूं और उस समय को याद रखता हूं। मैं एक निश्चित समय (डेब्यूटाइम) की प्रतीक्षा करता हूं और यदि बटन अभी भी दबाया जाता है तो मैं प्रतिक्रिया करता हूं। यह बटन के हर दूसरे प्रेस के बीच "रोकें" भी बनाता है ताकि यह कई प्रेस से बचा जा सके जहां कोई नहीं है।
और अंत में, इसके साथ:
अगर ((मिली () - prevTrigger) / १०००> = अंतराल। getVal ()) {
prevTrigger = मिली (); ट्रिगर (); }
हम सबसे पहले जांचते हैं कि अंतिम ट्रिगरिंग (prevTrigger) और वर्तमान समय (मिली ()) के बीच का समय (सब कुछ 1000 से विभाजित है क्योंकि यह मिलीसेकंड में है और अंतराल सेकंड में है) अंतराल के बराबर या उससे अधिक है हम चाहते हैं, और अगर यह है तो हम वर्तमान समय को याद करते हैं क्योंकि पिछली बार हमने कैमरे को चालू किया था और फिर इसे ट्रिगर किया था।
इस पूर्ण के साथ, हमने मूल रूप से एक इंटरवलोमीटर बनाया, लेकिन हम बहुत दूर हैं। हम अभी भी इंटरवलोमीटर का मान नहीं देखते हैं। यह केवल सीरियल मॉनिटर पर प्रदर्शित होता है और हम हमेशा कंप्यूटर के पास नहीं रहेंगे इसलिए अब हम कुछ ऐसा लागू करेंगे जो हमें अंतराल दिखाएगा जैसे ही हम इसे बदलते हैं।
चरण 7: अंतराल प्रदर्शित करना
यह वह जगह है जहां हम प्रदर्शन पेश करते हैं। मैंने 4 अंकों के मॉड्यूल का उपयोग किया जो TM1637 द्वारा संचालित है क्योंकि मुझे इसे केवल समय प्रदर्शित करने के लिए उपयोग करने की आवश्यकता है और कुछ नहीं। Arduino के लिए बनाए गए इन मॉड्यूल का उपयोग करने का सबसे आसान तरीका उनके लिए पहले से बने पुस्तकालयों का उपयोग करना है। Arduino साइट पर TM1673 चिप का वर्णन करने वाला एक पृष्ठ और सुझाई गई लाइब्रेरी का लिंक है। मैंने इस पुस्तकालय को डाउनलोड किया है और दो तरीके हैं जिनसे आप इन पुस्तकालयों को Arduino IDE से परिचित करा सकते हैं:
- Arduino सॉफ़्टवेयर से स्केच> लाइब्रेरी शामिल करें>. ZIP लाइब्रेरी जोड़ें और आपके द्वारा अभी डाउनलोड की गई.zip फ़ाइल का पता लगाएं।
- आप वह कर सकते हैं जो 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
आइए सेंसर को लागू करने के तरीकों पर विचार करें।
तो सेंसर में 5V की आपूर्ति वोल्टेज होगी, और जब हम कैमरे को ट्रिगर करना चाहते हैं तो इसे सिग्नल पिन पर डिजिटल हाई प्रदान करने में सक्षम होना चाहिए। पहली बात जो मेरे दिमाग में आई वह है मोशन सेंसर, पीर विशिष्ट होना। Arduino के लिए ऐसे मॉड्यूल बेचे जाते हैं जिन पर यह सेंसर लगा होता है और वही करते हैं जो हम चाहते हैं। वे 5V पर संचालित होते हैं और एक आउटपुट पिन होता है जिस पर वे ट्रिगर होने पर 5V डालते हैं, हमें बस इसके पिन को 3.5 मिमी ऑडियो जैक से कनेक्ट करने की आवश्यकता होती है और हम सीधे बोर्ड में प्लग कर सकते हैं। हालांकि ध्यान देने वाली एक बात यह है कि इस सेंसर को गर्म होने और ठीक से काम करना शुरू करने के लिए समय चाहिए, इसलिए जैसे ही आप इसे प्लग इन करते हैं, इसे ठीक से काम करने की अपेक्षा न करें, इसे कुछ समय दें और फिर इसे सेट करें और जो कुछ भी जीवित है उसमें चला जाए रेंज कैमरे को ट्रिगर करेगी।
चूंकि हम पहले से बने Arduino सेंसर बोर्ड की दिशा में सोच रहे हैं, एक और दिमाग में आता है, ध्वनि। इन बोर्डों को आम तौर पर इस तरह से बनाया जाता है कि उनके पास एक पिन होता है जो ध्वनि के अनुरूप मूल्य को आउटपुट करता है और दूसरा, डिजिटल एक, जो एक तार्किक उच्च आउटपुट करता है यदि ध्वनि उठाता है तो वह एक निश्चित स्तर को पार करता है। हम इस स्तर को इस तरह सेट कर सकते हैं कि सेंसर हमारी आवाज को नजरअंदाज कर देता है लेकिन एक ताली बजाता है। इस तरह, जब भी आप ताली बजाते हैं, आप कैमरा चालू कर देते हैं।
चरण 12: PoweeEeEer
मुझे लगता है कि इस चीज़ को पावर देने का सबसे आसान तरीका पावर बैंक है, न कि बाहरी रूप से। हम अपने फोन या जो कुछ भी चार्ज करने की कार्यक्षमता रखेंगे और एक स्विच के माध्यम से बोर्ड में वर्तमान प्रवाह को नियंत्रित करेंगे। हम पावर बैंक में सर्किट बोर्ड पर आउटपुट यूएसबी कनेक्टर के पिन का पता लगाएंगे जो जीएनडी और वीसीसी (5 वी) और सोल्डर तार सीधे उन पर और वहां से हमारे बोर्ड में हैं।
चरण 13: संलग्नक.. किंडा
मैं वास्तव में इससे जूझता रहा। जब मैंने उस बॉक्स को काट दिया जिसमें मैं मौजूदा पीसीबी को रखना चाहता था, मुझे एहसास हुआ कि सब कुछ फिट करने का कोई अच्छा तरीका नहीं है जैसा मैं चाहता था और फिर मैंने एक नया पीसीबी डिजाइन करने का फैसला किया, इस बार ऑप्टोकॉप्लर्स के साथ। मैं पीसीबी को उस तरफ रखना चाहता था जिस पर मैं कुछ घटकों के लिए छेद ड्रिल करूंगा जिन्हें देखने / छूने की जरूरत है। इसके लिए काम करने के लिए मुझे डिस्प्ले और Arduino को सीधे बोर्ड में, बिना सॉकेट या हेडर के मिलाप करना होगा, और यही वह जगह है जहाँ पहली समस्या है। किसी भी चीज़ का निवारण करना बिल्कुल भयानक था क्योंकि मैं इसे तुरंत मिलाप करने के लिए तैयार नहीं था जब तक कि मैं यह परीक्षण नहीं कर लेता कि सब कुछ काम कर रहा है, और मैं वास्तव में कुछ भी परीक्षण नहीं कर सका क्योंकि मैं इसे मिलाप नहीं कर सकता था और इसी तरह.. डॉन यह मत करो। समस्या नंबर डॉस, केस में छेद करना। मुझे लगता है कि मैंने माप गलत लिया क्योंकि मामले के किसी भी छेद को पीसीबी पर घटकों के साथ संरेखित नहीं किया गया था और मुझे उन्हें बड़ा करना था और पीसीबी पर बटन बहुत अधिक थे और जब मैं बोर्ड लगाता था तो वे हमेशा दबाए जाते थे। आऔर चूंकि मैं किनारे पर ऑडियो जैक चाहता था, मुझे पहले जैक को फिट करने के लिए उन छेदों को भी बड़ा करना पड़ा और फिर डिस्प्ले और बटन के माध्यम से आने के लिए बोर्ड को नीचे करना पड़ा.. परिणाम भयानक है।
मैंने कुछ पतले कार्डबोर्ड के साथ शीर्ष को ओवरले करके भयानक छेद को कम भयानक बना दिया जिसमें मैंने घटकों के लिए अधिक उचित छेद काट दिया और.. यह अभी भी भयानक है लेकिन मुझे लगता है कि आंख पर आसान है।
फैसला, मेरा सुझाव है कि आप इसे उन घटकों को खरीदकर करें जो बाड़े पर चढ़ते हैं, और सीधे पीसीबी पर नहीं। इस तरह आपको घटकों को रखने की अधिक स्वतंत्रता है और गलती करने के लिए कम स्थान हैं।
चरण 14: फिन
मैं कर चुका हूं, लेकिन यहां कुछ चीजें हैं जो मैंने अलग तरीके से की होंगी:
बेहतर गुणवत्ता वाले 3.5 मिमी ऑडियो जैक का उपयोग करें। जिन लोगों का मैंने उपयोग किया है, वे जैक को सम्मिलित करते या खींचते समय टर्मिनलों को छोटा करते हैं, जिसके परिणामस्वरूप या तो आपूर्ति कम हो जाती है और इस प्रकार Arduino को रीसेट कर दिया जाता है या यह सिर्फ नकली ट्रिगर पैदा करता है। मैंने इसे पिछले चरण में कहा है, लेकिन मैं इसे फिर से कहूंगा.. हेडर/सॉकेट के बिना Arduino बोर्ड को मिलाप न करें, यह किसी भी प्रकार की समस्या निवारण या नया कोड अपलोड करता है और इसी तरह बहुत कठिन है। मुझे यह भी लगता है कि एक एलईडी सिग्नल होना कि बात चालू है, उपयोगी होता क्योंकि मैं अक्सर बटन दबाए बिना नहीं बता सकता क्योंकि डिस्प्ले बंद हो जाता है। और आखिरी बात, एक विराम समारोह। मैं कल्पना करता हूं कि यह तब उपयोगी होता है जब उदाहरण के लिए पीर सेंसर में प्लगिंग करते समय, क्योंकि इसे गर्म होने के लिए समय चाहिए, या बस इसे अपने चारों ओर घुमाते समय इसे ट्रिगर नहीं करना चाहते हैं ताकि आप सब कुछ रोक सकें, लेकिन आप बस मोड़ भी सकते हैं कैमरे के बाहर तो.. जो भी हो।
एक और साफ-सुथरी बात यह है कि इसे तिपाई पर वेल्क्रो करना है क्योंकि इसके वहां इस्तेमाल होने की सबसे अधिक संभावना है।
टिप्पणियों में इस परियोजना के बारे में कुछ भी पूछने के लिए स्वतंत्र महसूस करें और मुझे यह जानना अच्छा लगेगा कि क्या आप इसे बनाते हैं और यह आपके लिए कैसे निकला।
सिफारिश की:
मेरा मलबे दलाल: 9 कदम
पिंप माई व्रेक: परिचय सभी को नमस्कार! हम आईडीसी के दो कंप्यूटर विज्ञान के छात्र हैं, और छात्रों के रूप में, हम औसत दर्जे के वाहनों के लिए समझौता करते हैं (कम से कम जब तक हमें नौकरी नहीं मिलती)। तब तक, हमारे पास अपने मलबे को अपग्रेड करने का जुनून है, कम से कम हमारे पास जो कुछ भी है उसके साथ अच्छा महसूस करें।भाग्यशाली
ESP32-CAM केस सिस्टम और 3D प्रिंटर कैम: 10 कदम (चित्रों के साथ)
ESP32-CAM केस सिस्टम और 3D प्रिंटर कैम: मैं अपने 3-D प्रिंटर पर कैमरे को कुछ छोटे, सरल और कार्यात्मक …. और सस्ते के साथ बदलने पर विचार कर रहा था। कुछ Google खोजों ने मुझे ESP32-Cam मॉड्यूल तक पहुँचाया। आप उन्हें $ 10 से कम में पा सकते हैं, जैसे कम और वे वास्तव में अच्छा प्रदर्शन करते हैं
फूड कैम: 18 कदम (चित्रों के साथ)
फ़ूड कैम: यह प्रोजेक्ट एमआईटी मीडिया लैब द्वारा किए गए फ़ूड कैम प्रोजेक्ट से प्रेरित था। यह परियोजना सिंगापुर में UWCSEA पूर्व में कॉलेज सेवा कोडिंग फॉर गुड का हिस्सा है। इस परियोजना का लक्ष्य हमारे समुदाय द्वारा बर्बाद किए जाने वाले भोजन की मात्रा को कम करना है
बिजली आपूर्ति का मेरा "ओवरकिल": 4 कदम (चित्रों के साथ)
बिजली आपूर्ति का मेरा "ओवरकिल": नमस्ते। मेरा शीर्षक कहता है: ”एक बिजली की आपूर्ति का एक ओवरकिल ”” हम्म .. देखते हैं कि क्या यह है।यहाँ लक्ष्य तक पहुँचने से पहले शक्ति 5 चरणों से गुजरती है, (इस मामले में ATtiny84, ATMEL-परिवार का एक सदस्य)। मुझे लगता है कि यह वास्तव में नहीं है
यूएसबी इंडोर/आउटडोर थर्मामीटर (या, 'मेरा पहला यूएसबी डिवाइस'): 4 कदम (चित्रों के साथ)
यूएसबी इंडोर/आउटडोर थर्मामीटर (या, 'माई फर्स्ट यूएसबी डिवाइस'): यह एक साधारण डिज़ाइन है जो पीआईसी 18 एफ पर यूएसबी परिधीय प्रदर्शित करता है। ऑनलाइन 18F4550 40 पिन चिप्स के लिए उदाहरणों का एक गुच्छा है, यह डिज़ाइन छोटे 18F2550 28 पिन संस्करण को प्रदर्शित करता है। PCB सतह माउंट भागों का उपयोग करता है, लेकिन सभी c