Arduino - I / O फ़ंक्शंस

Arduino बोर्ड पर पिन को इनपुट या आउटपुट के रूप में कॉन्फ़िगर किया जा सकता है। हम उन मोड में पिंस के कामकाज की व्याख्या करेंगे। यह ध्यान रखना महत्वपूर्ण है कि Arduino एनालॉग पिंस का बहुमत, डिजिटल पिंस के रूप में बिल्कुल उसी तरीके से कॉन्फ़िगर और उपयोग किया जा सकता है।

पिन INPUT के रूप में कॉन्फ़िगर किए गए

Arduino पिन डिफ़ॉल्ट रूप से इनपुट के रूप में कॉन्फ़िगर किए गए हैं, इसलिए उन्हें इनपुट के साथ स्पष्ट रूप से घोषित किए जाने की आवश्यकता नहीं है pinMode()जब आप उन्हें इनपुट के रूप में उपयोग कर रहे हैं। इस तरह से कॉन्फ़िगर किए गए पिंस को उच्च-प्रतिबाधा स्थिति में कहा जाता है। इनपुट पिन सर्किट पर बहुत छोटी मांग करते हैं कि वे नमूना ले रहे हैं, पिन के सामने 100 मेगाहम के एक श्रृंखला रोकनेवाला के बराबर।

इसका मतलब है कि एक राज्य से दूसरे राज्य में इनपुट पिन को स्विच करने में बहुत कम समय लगता है। यह कैपेसिटिव टच सेंसर को लागू करने या एक फोटोडायोड के रूप में एक एलईडी पढ़ने के रूप में ऐसे कार्यों के लिए पिन को उपयोगी बनाता है।

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

पुल-अप रेसिस्टर्स

यदि कोई इनपुट मौजूद नहीं है, तो एक ज्ञात राज्य में इनपुट पिन को चलाने के लिए पुल-अप रेसिस्टर्स अक्सर उपयोगी होते हैं। यह इनपुट पर एक पुल-अप रोकनेवाला (+ 5 वी), या इनपुट पर एक पुल-डाउन रोकनेवाला (जमीन के लिए अवरोध) को जोड़कर किया जा सकता है। एक 10K रोकनेवाला पुल-अप या पुल-डाउन रोकनेवाला के लिए एक अच्छा मूल्य है।

इनपुट के रूप में निर्मित पिन के साथ अंतर्निहित पुल-अप रिसिस्टर का उपयोग करना

20,000 ऐसे पुल-अप रेज़िस्टर्स हैं जिन्हें एटमेगा चिप में बनाया गया है जिसे सॉफ्टवेयर से एक्सेस किया जा सकता है। इन अंतर्निहित पुल-अप प्रतिरोधों को सेट करके पहुँचा जाता हैpinMode()INPUT_PULLUP के रूप में। यह प्रभावी रूप से INPUT मोड के व्यवहार को प्रभावित करता है, जहां उच्च का मतलब सेंसर बंद है और कम का अर्थ है कि सेंसर चालू है। इस पुल-अप का मूल्य उपयोग किए गए माइक्रोकंट्रोलर पर निर्भर करता है। अधिकांश एवीआर-आधारित बोर्डों पर, मूल्य 20k based और 50k based के बीच होने की गारंटी है। Arduino ड्यू पर, यह 50k 150 और 150k Due के बीच है। सटीक मान के लिए, अपने बोर्ड पर माइक्रोकंट्रोलर की डेटशीट से परामर्श करें।

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

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

Example

pinMode(3,INPUT) ; // set pin to input without using built in pull up resistor
pinMode(5,INPUT_PULLUP) ; // set pin to input using built in pull up resistor

पिन को OUTPUT के रूप में कॉन्फ़िगर किया गया

पिनमोड () के साथ OUTPUT के रूप में कॉन्फ़िगर किए गए पिन को कम-प्रतिबाधा की स्थिति में कहा जाता है। इसका मतलब है कि वे अन्य सर्किट को पर्याप्त मात्रा में वर्तमान प्रदान कर सकते हैं। Atmega पिन स्रोत (सकारात्मक वर्तमान प्रदान कर सकते हैं) या सिंक (नकारात्मक वर्तमान प्रदान) अप करने के लिए 40 mA (milliamps) वर्तमान के अन्य उपकरणों / सर्किट। यह एक एलईडी को उज्ज्वल रूप से चमकाने के लिए पर्याप्त है (श्रृंखला अवरोधक को मत भूलना), या कई सेंसर चलाएं लेकिन रिले, सोलनॉइड या मोटर्स को चलाने के लिए पर्याप्त वर्तमान नहीं।

आउटपुट पिन से उच्च वर्तमान उपकरणों को चलाने का प्रयास, पिन में आउटपुट ट्रांजिस्टर को नुकसान पहुंचा सकता है या नष्ट कर सकता है, या पूरे एटमेगा चिप को नुकसान पहुंचा सकता है। अक्सर, इसका परिणाम माइक्रोकंट्रोलर में "मृत" पिन होता है लेकिन शेष चिप्स अभी भी पर्याप्त रूप से कार्य करते हैं। इस कारण से, OUTPUT पिन को 470Ω या 1k प्रतिरोधों के माध्यम से अन्य उपकरणों से कनेक्ट करना एक अच्छा विचार है, जब तक कि किसी विशेष एप्लिकेशन के लिए पिन से अधिकतम वर्तमान खींचना आवश्यक न हो।

pinMode () फ़ंक्शन

PinMode () फ़ंक्शन का उपयोग किसी विशिष्ट पिन को इनपुट या आउटपुट के रूप में व्यवहार करने के लिए किया जाता है। INPUT_PULLUP मोड के साथ आंतरिक पुल-अप प्रतिरोधों को सक्षम करना संभव है। इसके अतिरिक्त, INPUT मोड आंतरिक पुल-अप को स्पष्ट रूप से अक्षम करता है।

pinMode () फ़ंक्शन सिंटैक्स

Void setup () {
   pinMode (pin , mode);
}
  • pin - पिन की संख्या जिसका मोड आप सेट करना चाहते हैं

  • mode - INPUT, OUTPUT, या INPUT_PULLUP।

Example

int button = 5 ; // button connected to pin 5
int LED = 6; // LED connected to pin 6

void setup () {
   pinMode(button , INPUT_PULLUP); 
   // set the digital pin as input with pull-up resistor
   pinMode(button , OUTPUT); // set the digital pin as output
}

void setup () {
   If (digitalRead(button ) == LOW) // if button pressed {
      digitalWrite(LED,HIGH); // turn on led
      delay(500); // delay for 500 ms
      digitalWrite(LED,LOW); // turn off led
      delay(500); // delay for 500 ms
   }
}

digitalWrite () फ़ंक्शन

digitalWrite()फ़ंक्शन का उपयोग डिजिटल पिन के लिए एक उच्च या कम मान लिखने के लिए किया जाता है। यदि पिन को पिनमोड () के साथ एक OUTPUT के रूप में कॉन्फ़िगर किया गया है , तो इसके वोल्टेज को इसी मान पर सेट किया जाएगा: उच्च के लिए 5V (या 3.3V बोर्डों पर 3.3V), LOW के लिए 0V (ग्राउंड)। यदि पिन INPUT के रूप में कॉन्फ़िगर किया गया है, तो digitalWrite () इनपुट पिन पर आंतरिक पुलअप को सक्षम (उच्च) या अक्षम (LOW) करेगा। आंतरिक पुल-अप रोकनेवाला को सक्षम करने के लिए INMUT_PULLUP को पिनमोड () सेट करने की अनुशंसा की जाती है ।

यदि आप पिनमोड () को OUTPUT पर सेट नहीं करते हैं, और डिजिटलवर्ट (हाई) कॉल करते समय एक एलईडी को पिन से कनेक्ट करते हैं, तो एलईडी मंद दिखाई दे सकती है। पिनमोड () को स्पष्ट रूप से सेट किए बिना, डिजिटलवर्ट () ने आंतरिक पुल-अप रोकनेवाला को सक्षम किया होगा, जो एक बड़े वर्तमान-सीमित अवरोधक की तरह काम करता है।

digitalWrite () फ़ंक्शन सिंटैक्स

Void loop() {
   digitalWrite (pin ,value);
}
  • pin - पिन की संख्या जिसका मोड आप सेट करना चाहते हैं

  • value - उच्च या कम।

Example

int LED = 6; // LED connected to pin 6

void setup () {
   pinMode(LED, OUTPUT); // set the digital pin as output
}

void setup () { 
   digitalWrite(LED,HIGH); // turn on led
   delay(500); // delay for 500 ms
   digitalWrite(LED,LOW); // turn off led
   delay(500); // delay for 500 ms
}

analogRead () फ़ंक्शन

Arduino यह पता लगाने में सक्षम है कि क्या उसके पिंस में से एक पर वोल्टेज लागू होता है और digitalRead () फ़ंक्शन के माध्यम से रिपोर्ट करता है। ऑन / ऑफ सेंसर (जो किसी वस्तु की उपस्थिति का पता लगाता है) और एनालॉग सेंसर के बीच अंतर होता है, जिसका मूल्य लगातार बदलता रहता है। इस प्रकार के सेंसर को पढ़ने के लिए, हमें एक अलग प्रकार के पिन की आवश्यकता होती है।

Arduino बोर्ड के निचले-दाएं हिस्से में, आपको "एनालॉग इन" चिह्नित छह पिन दिखाई देंगे। ये विशेष पिन न केवल बताते हैं कि क्या उन पर लागू वोल्टेज है, बल्कि इसका मूल्य भी है। का उपयोग करकेanalogRead() फ़ंक्शन, हम किसी एक पिन पर लगाए गए वोल्टेज को पढ़ सकते हैं।

यह फ़ंक्शन 0 और 1023 के बीच एक संख्या देता है, जो 0 और 5 वोल्ट के बीच वोल्टेज का प्रतिनिधित्व करता है। उदाहरण के लिए, यदि पिन नंबर 0 पर लागू 2.5 वी का वोल्टेज है, तो एनालॉगरेड (0) रिटर्न 512 है।

analogRead () फ़ंक्शन सिंटैक्स

analogRead(pin);
  • pin - एनालॉग इनपुट पिन की संख्या को पढ़ने के लिए (0 से 5 सबसे बोर्डों पर, 0 से 7 मिनी और नैनो पर, 0 से 15 तक मेगा पर)

Example

int analogPin = 3;//potentiometer wiper (middle terminal) 
   // connected to analog pin 3 
int val = 0; // variable to store the value read

void setup() {
   Serial.begin(9600); // setup serial
} 

void loop() {
   val = analogRead(analogPin); // read the input pin
   Serial.println(val); // debug value
}