बुधवार, 1 मार्च 2017

Arduino digital button with pullup and pulldown resistors

( क्लिक करने पर बड़ा फोटो दिखेगा )

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


Components

  • Arduino Uno's board with USB cable
  • one breadboard small
  • one Tact Switch
  • one LED
  • Resistors 220 Ohms, 10 K Ohms, one each.
  • Jumper wires (Male-Male)
इस एक्सपेरिमेंट के लिए जरूरी सारी चीजें आपको आर्डूइनो उनो के किसी भी स्टार्टर किट में मिल जाएँगी. अपने अगर अभी तक कोई किट नहीं ख़रीदा हो तो आप इस पन्ने के दाहिनी ओर दिख रहे लिंक पर इन किट्स को खरीद सकते हो.

Prerequisite

इस एक्सपेरिमेंट के लिए आपको आर्डूइनो के प्रोग्रामिंग सॉफ्टवेअर की जरूरत पड़ेगी. इसे आपको अपने कम्प्युटर पर इंस्टाल करना होता है. अगर आपने अभी तक ऐसा नहीं किया है तो आप इस लिंक से डाऊनलोड कर सकते हैं.


Circuit

हम दो सर्किट बनायेंगे. पहले सर्किट में एलइडी आम तौर पर बंद रहेगा और बटन दबाने पर वह जल जाएगा. वह तब तक ऑन रहेगा जब तक आप बटन को ऊँगली से दबाये रखते हो. इसके लिए हम एक प्रोग्राम भी अपलोड करेंगे.

दुसरे सर्किट में एलइडी आम तौर पर जलता रहेगा और वह तब बंद होगा जब आप बटन दबाओगे. वह तब तक बंद रहेगा जब तक आप अपनी ऊँगली बटन पर दबाये रखोगे.


LED Normally Off

( क्लिक करने पर फोटो बड़ा दिखेगा )

यहाँ पर हम आर्डूइनो उनो के दो डिजिटल पोर्ट इस्तेमाल करेंगे. पिन 13 और 2. आप चाहो तो किसी और पोर्ट का भी इस्तेमाल कर सकते हैं.

हमने यहाँ पर एक टॅक्ट स्वीच इस्तेमाल किया है. आप इसे इस्तेमाल करें इससे पहले आपको इन स्वीच के पिनों की जानकारी होना जरूरी है. अगर आपने इससे पहले टॅक्ट स्वीच इस्तेमाल नहीं किया हो तो आप इस आर्टिकल में इसके बारे में जानकारी ले सकते हैं.

टॅक्ट स्वीच के बारे में विस्तार से जानकारी मैंने एक व्हिडियो में दी है. अगर आप चाहो तो इसे  इस लिंक पर  देख सकते हैं.

टॅक्ट स्वीच को ब्रेड बोर्ड के बीचों बीच किसी भी सुविधाजनक स्थान पर बिठा लें. और साथ में एलइडी को भी किसी जगह पर बिठा लें. एलइडी का लंबा पैर पॉजिटिव्ह और छोटा पैर निगेटिव्ह का होता है.

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

आप इस सर्किट तो कई अलग अलग तरह से जोड़ सकते हैं, लेकिन समझने में सुविधा हो इसलिए मैंने कम से कम वायरों का इस्तेमाल यहाँ पर किया है. 

हम 220 ओहम्स के रेजिस्टर को एलईडी के छोटे पैर से जोड़ेंगे. एलईडी का छोटा पैर निगेटिव का होता है इसे कॅथोड कहते हैं. रेजिस्टर का दूसरा छोर हम ब्रेडबोर्ड के नीली लेन से जोड़ेंगे.

अगर आपको ब्रेड बोर्ड पर कनेक्शन कैसे किया जाते हैं इसके बारे में जानकारी ना हो तो आप इसे इस आर्टिकल में पढ़ सकते हैं. 

हम आर्डूइनो उनो के 5V और ग्राउंड के पिनों से स्वीच को जोड़ेंगे. इसके लिए हम मेल टू मेल जम्पर वायरों का इस्तेमाल करेंगे.  5V के पिन को स्वीच के किसी एक छोर से ब्रेड बोर्ड पर जोडिये. ग्राउंड के पिन को ब्रेडबोर्ड के नीली लेन में जोडिये.

अब हम स्वीच के ग्राउंड से जुड़े हुए साईड को आर्डूइनो के डिजिटल पिन नंबर 2 से जोड़ेंगे.

अब हम एलईडी के लम्बे वाले पैर को आर्डूइनो के डिजिटल पिन नंबर 13 से जोड़ेंगे.

अब आर्डूइनो उनोके बोर्ड को युएसबी केबल से कम्प्युटर से जोडीये और नीचे दिखाया गया प्रोग्राम ओपन कीजिये.

File - Examples - Digital - Button

इसे अपलोड करने के लिए आप अपलोड के आईकॉन का इस्तेमाल कर सकते हैं या फिर Skecth - Upload इस मेनू का.

प्रोग्राम अपलोड होने पर जब आप बटन दबाओगे तब एलइडी जल उठेगी और उंगली हटाने पर बुझ जाएगी.

इसकी प्रोग्रामिंग किस तरह से की गई है यह समझाने के लिए मैंने इसका एक संक्षिप्त संस्करण बनाया है.

( क्लिक करने पर फोटो बड़ा दिखेगा )

int x = 2;

हमें 2 नंबर की पिन को मिलने वाले इनपुट की व्हॅल्यू को स्टोर करने के लिए एक इंटीजर व्हॅरिएबल की जरुरत पड़ेगी. पिन 2 पर मिलने वाला इनपुट या तो लो होता है या हाय. जब बटन दबाया जाता है तब इनपुट हाय होता है और आम तौर पर यह लो होता है. इस लो स्टेट को मेंटेन करने के लिए रेजिस्टर को पुल डाउन पोजीशन में कनेक्ट किया जाता है.    

setup() function

सेट अप फंक्शन में हम पिन नंबर 2 को इनपुट पोर्ट की तरह और पिन 13 को आउटपुट पोर्ट की तरह डिफाईन करते हैं.

loop() function

लूप फंक्शन में हम 2 नंबर के पोर्ट से मिलने वाली व्हॅल्यू को x में स्टोर करते हैं और फिर 13 नंबर के पोर्ट से एलइडी को सिग्नल भेजते हैं. 

तो ये काफी आसान है.


LED Normally On

click to enlarge

इस सर्किट से एलइडी आम तौर पर जलता रहेगा जब तक आप बटन न दबाओ. और जब तक आपकी ऊँगली बटन को दबाये रहेगी तब तक एलइडी बुझी रहेगी. इसके लिए हमें प्रोग्राम के अन्दर भी बदलाव करना होगा.

पहले वाले सर्किट के बाद हमें इस सर्किट में 10 किलो  ओहम्स के रेजिस्टर की जगह बदलनी पड़ेगी. हम रेजिस्टर को ग्राउंड के बजाय 5V के पिन से जोड़ेंगे. स्वीच और इनपुट पिन से जुड़ा रेजिस्टर जब ग्राउंड से जोड़ते हैं तो उस पोजीशन में उसे पुल डाउन रेजिस्टर कहा जाता है. और जब उसे हम स्विच और पोजिटिव सप्लाय के बीच में जोड़ते हैं तो उस पोजीशन में उसे पुल अप रेजिस्टर कहा जाता है.

जब स्विच से मिलने वाला सिग्नल आम तौर पर LOW चाहिए तो रेजिस्टर को पुल डाउन रेजिस्टर, और आम तौर पर HIGH चाहिए तो पुल अप रेजिस्टर की तरह कनेक्ट किया जाता है. यह पोजीशन इनपुट के लिए इस्तेमाल होने वाले स्वीच के लिए लागू होती है.

आउटपुट से जुड़े हुए एलइडी को आप रेजिस्टर किसी भी पिन से जोड़ सकते हैं   

इस सर्किट के भी लिए हम ऊपर वाला ही प्रोग्राम इस्तेमाल करेंगे.

इसमें  जब बटन दबाया जायेगा तब हम एलइडी को ऑफ़ कर देंगे वरना आम तौर पर एलइडी जलती रहेगी.

Summary

इस आर्टिकल में हमने आर्डूइनो उनो के डिजिटल पिनों से डिजिटल इनपुट और आउटपुट कैसे होता है यह देखा. और साथ ही रेजिस्टर के पुल अप और पुल डाउन पोजीशन के बारे में भी जाना.