विषयसूची:

Arduino डोरबेल: 4 कदम
Arduino डोरबेल: 4 कदम

वीडियो: Arduino डोरबेल: 4 कदम

वीडियो: Arduino डोरबेल: 4 कदम
वीडियो: Beyond the Basics: Automatic Gatekeeper With IR Sensor And ChatGPT Generated Arduino Code 2024, जुलाई
Anonim
अरुडिनो डोरबेल
अरुडिनो डोरबेल

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

आपूर्ति:

  • Arduino Uno (अधिकांश अन्य प्रकार करेंगे)
  • प्रोग्रामिंग के लिए Arduino IDE वाला कंप्यूटर
  • Arduino की प्रोग्रामिंग के लिए USB-A से USB-B केबल
  • ब्रेड बोर्ड
  • 4x जम्पर तार
  • पुशबटन या अन्य स्विच
  • 10 kOhm रोकनेवाला
  • निष्क्रिय बजर (यानी पीजोइलेक्ट्रिक स्पीकर)
  • स्थायी स्थापना के लिए:

    • Arduino को पावर देने के लिए 9V DC पावर सप्लाई या 9V बैटरी
    • दरवाजे के बाहर वायरिंग बटन के लिए 2x लंबे तार

चरण 1: हार्डवेयर सेटअप

हार्डवेयर सेटअप
हार्डवेयर सेटअप
हार्डवेयर सेटअप
हार्डवेयर सेटअप
हार्डवेयर सेटअप
हार्डवेयर सेटअप

सबसे पहले, हम हार्डवेयर स्थापित करेंगे। हम पैसिव बजर (यानी स्पीकर) से शुरुआत करेंगे। हम निष्क्रिय बजर के सकारात्मक छोर ("+" चिह्न द्वारा चिह्नित) को Arduino पर डिजिटल पिन 8 से जोड़ना चाहते हैं। हम पासिज़ बजर के दूसरे छोर को जमीन से जोड़ देंगे।

अगला, हम दरवाजे की घंटी के लिए पुशबटन स्थापित करेंगे। हम स्विच के लिए 10 kOhm बाहरी पुलडाउन रेसिस्टर का उपयोग करेंगे, इसलिए Arduino के इनपुट पर कोई फ्लोटिंग वोल्टेज या अस्थिर स्थिति नहीं है। पुलडाउन रोकनेवाला का उपयोग करके, Arduino वोल्टेज को 0V के रूप में पढ़ता है जब बटन दबाया नहीं जाता है और 5V जब बटन दबाया जाता है। पुलअप या पुलडाउन प्रतिरोधों के बारे में अधिक जानकारी के लिए, आप इस लेख को पढ़ सकते हैं:

हम पुशबटन के एक तरफ को 5V से जोड़ेंगे। पुशबटन का दूसरा किनारा 10 kOhm पुलडाउन रेसिस्टर के माध्यम से जमीन से जुड़ा होगा। याद रखें: पुशबटन आंतरिक रूप से क्षैतिज रूप से जुड़े हुए हैं। दबाए जाने पर वे केवल लंबवत रूप से जुड़े होते हैं। इस लेख में अधिक जानकारी प्रदान की गई है:

चरण 2: सॉफ्टवेयर सेटअप

सभी कोड संलग्न हैं। कोड के स्नैपशॉट के साथ प्रत्येक फ़ंक्शन का विवरण नीचे दिया गया है।

सेट अप:

सेटअप () फ़ंक्शन में, हम अपने बटन और हमारे स्पीकर के लिए डिजिटल पिन को कॉन्फ़िगर करना चाहते हैं। हम अपने बटन के इनपुट के रूप में पिन 2 को कॉन्फ़िगर करना चाहते हैं, और हम अपने स्पीकर के आउटपुट के रूप में पिन 8 को कॉन्फ़िगर करना चाहते हैं।

जब कोई हमारे दरवाजे की घंटी बजाता है तो हम बेतरतीब ढंग से एक धुन का चयन करने के लिए अपने यादृच्छिक संख्या जनरेटर को "बीज" करना चाहते हैं। हमारे यादृच्छिक संख्या जनरेटर को सीडिंग करने का अर्थ है इसे एक यादृच्छिक इनपुट खिलाना। हम अपने यादृच्छिक संख्या जनरेटर को एनालॉग इनपुट 0 पर वोल्टेज मान के साथ सीड करेंगे। चूंकि इस इनपुट से कुछ भी जुड़ा नहीं है, इसलिए इस पिन पर एक "यादृच्छिक" उतार-चढ़ाव वाला वोल्टेज होगा, जो हमारे यादृच्छिक संख्या जनरेटर को कई अलग-अलग मूल्यों के साथ प्रदान करेगा। यह सुनिश्चित करता है कि हमारे पास हमारे दरवाजे की घंटी के लिए गाने के चयन का एक अलग क्रम होगा। Arduino रैंडम () फ़ंक्शन के बारे में अधिक जानकारी के लिए, यहाँ जाएँ:

#शामिल "पिच। एच"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 /* सेट अप फंक्शन */ void सेटअप() {// इनेबल इनपुट/आउटपुट पिन पिनमोड (BUTTON_PIN, INPUT); पिनमोड (SPEAKER_PIN, OUTPUT); // बीज यादृच्छिक () फ़ंक्शन ताकि हमें एक अलग क्रम मिल सके randomSeed(analogRead(0)); }

कुंडली:

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

एक बार जब हमने पुष्टि कर दी कि बटन दबाया गया था, तो हम स्विच स्टेटमेंट का उपयोग करके 5 गीतों में से एक का चयन करने के लिए अपने यादृच्छिक संख्या जनरेटर का उपयोग करते हैं। इन गानों का डेटा "songs.h" में स्टोर किया जाता है और पिच की जानकारी "pitches.h" में स्टोर की जाती है। एक बार जब हम कोई गाना चुन लेते हैं, तो हम इस जानकारी को फंक्शन play_song() में पास कर देते हैं।

/* मुख्य जबकि लूप फंक्शन */

शून्य लूप () {// यह देखने के लिए जांचें कि क्या बटन दबाया गया है अगर (डिजिटल रीड (बटन_पिन) == हाई) {// 50 एमएस देरी सुनिश्चित करने के लिए कि यह अभी भी दबाया गया है // किसी भी गलत गलत पढ़ने में देरी से बचा जाता है (50); if(digitalRead(BUTTON_PIN) == High) {// बेतरतीब ढंग से एक गाना चुनें int song_choice = random(5); // चुनें कि कौन सा गाना बजाना है स्विच (song_choice) {केस 0: play_song (बाल कटने की लंबाई, बाल कटवाने, बाल कटवाने की अवधि, बाल कटवाने टेम्पो); टूटना; केस 1: play_song (मारियो लम्बाई, मारियो, मारियो अवधि, मारियो टेम्पो); टूटना; केस 2: play_song (miiLength, mii, miiDurations, miiTempo); टूटना; केस 3: play_song (hpLength, hp, hpDurations, hpTempo); टूटना; केस 4: play_song (टेकऑनमेलेंथ, टेकऑनमे, टेकऑनमेड्यूरेशन्स, टेकऑनमेटेम्पो); टूटना; डिफ़ॉल्ट: play_song (miiLength, mii, miiDurations, miiTempo); टूटना; } } } }

गीत बजाओ:

play_song () 4 तर्क लेता है: गीत में नोटों की एक पूर्णांक संख्या, राग में पिचों की एक पूर्णांक सरणी, अवधि की एक पूर्णांक सरणी और उस विशेष गीत के लिए एक पूर्णांक गति। आपको इनमें से हर उस गाने के लिए निर्दिष्ट करना होगा जिसे आप बजाना चाहते हैं। Arduino टोन फ़ंक्शंस का उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए, आप इस ट्यूटोरियल को देख सकते हैं: https://www.arduino.cc/en/Tutorial/ToneMelody। मैंने बिंदीदार नोट्स के लिए इस ट्यूटोरियल के शीर्ष पर कुछ कार्यक्षमता जोड़ी है। यदि नोट अवधि सरणी में कोई मान ऋणात्मक है, तो इसका अर्थ है कि यह एक बिंदीदार नोट है (लंबाई 1.5 गुना अधिक है)।

/* गाना बजाता है */

शून्य play_song (इंट num_notes, इंट मेलोडी , इंट नोट अवधि , इंट टेम्पो) {// स्टेप थ्रू और सभी नोट्स के लिए (int i = 0; i 0) {अवधि = टेम्पो / नोट अवधि ; } // यदि यह एक ऋणात्मक संख्या है, तो इसका अर्थ है बिंदीदार नोट // बिंदीदार नोटों के लिए अवधि को आधे से बढ़ा देता है यदि (नोट अवधि < 0) {अवधि = गति / पेट (नोट अवधि ) * 1.5; } टोन (SPEAKER_PIN, मेलोडी , अवधि); // नोटों को अलग करने के लिए, उनके बीच न्यूनतम समय निर्धारित करें। // नोट की अवधि + ३०% अच्छी तरह से काम करती प्रतीत होती है: इंट पॉज़बेटीनोट्स = अवधि * १.३०; देरी (नोट्स के बीच रोकें); // टोन बजाना बंद करें: नोटोन (SPEAKER_PIN); } }

गाने का नमूना। एच:

नीचे "songs.h" के गानों में से एक का एक नमूना है। नोट्स मैक्रोज़ हैं जिन्हें "Pitches.h" में परिभाषित किया गया है। संख्या हर्ट्ज (हर्ट्ज) में नोटों की आवृत्तियों के अनुरूप है। नोटों की अवधि को इस प्रकार परिभाषित किया गया है: 1 = संपूर्ण नोट, 2 = आधा नोट, 4 = चौथाई नोट, 8 = आठवां नोट, -4 = बिंदीदार तिमाही नोट, आदि। लंबाई गीत में नोटों की कुल संख्या है। गति गीत की गति के लिए एक विभक्त है (अधिक संख्या का अर्थ है धीमी गति)। आपको इस नंबर के साथ तब तक खेलना होगा जब तक आपको अपनी पसंद का टेम्पो न मिल जाए।

/* हैरी पॉटर */

इंट एचपी = {नोट_डी4, नोट_जी4, नोट_एएस4, नोट_ए4, नोट_जी4, नोट_डी5, नोट_सी5, नोट_ए4, नोट_जी4, नोट_एएस4, नोट_ए4, नोट_एफ4, नोट_जीएस4, नोट_डी4}; int hpDurations = { 4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1}; int hpLength = 14; इंट एचपीटेम्पो = १०५०;

चरण 3: बदलाव

और गीत जोड़ें! "Songs.h" में दिखाए गए प्रारूप का पालन करें और मदद के लिए ट्यूटोरियल का उपयोग करें: https://www.arduino.cc/en/Tutorial/ToneMelody। आपके द्वारा जोड़े जाने वाले प्रत्येक नए गीत के लिए, स्विच स्टेटमेंट में एक नया केस जोड़ना याद रखें और अधिकतम संख्या बढ़ाएं जो आपके रैंडम () फ़ंक्शन द्वारा उत्पन्न की जा सकती है। हैप्पी कोडिंग!

चरण 4: अधिक परियोजनाएं

अधिक परियोजनाओं के लिए, मेरे पृष्ठों पर जाएँ:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

सिफारिश की: