ब्लिंक प्रोजेक्ट्स। चमकती एलईडी

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

लेकिन साल बीत चुके हैं और जिद्दी कंपनियों ने एक वास्तविक जगह बनाई है, एक पूरा बाजार जिसमें लाखों उत्साही गैर-पेशेवर उबल रहे हैं, उत्साह से एक और "आर्डिनो डिवाइस" को इकट्ठा कर रहे हैं। यह वही उत्साही हैं जो ढाल और सेंसर के निर्माताओं को मोटी रकम देते हैं, और रिमोट कंट्रोल के साथ अपने स्मार्ट उपकरणों को नियंत्रित करने की आवश्यकता है। और, अजीब तरह से पर्याप्त, उनकी जरूरत को सबसे सुंदर तरीके से पूरा किया गया। ब्लिंक का जन्म हुआ है।

ब्लिंक ऐप

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

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

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

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

ठीक उसी तरह, आपको अपने डिवाइस के लिए एक सुविधाजनक रिमोट कंट्रोल मिलता है, जो न केवल इसे कमांड भेजने में सक्षम है, बल्कि आपकी स्क्रीन पर आपकी जरूरत की हर चीज को प्रदर्शित करता है। डेवलपर्स ने उन्नत और विस्तृत प्रलेखन से भी परेशान नहीं किया। Blynk वेबसाइट के एक पृष्ठ पर एक ही दस्तावेज़ में सब कुछ एकत्र किया जाता है। खैर, ठीक है, कार्यान्वयन में आसानी के लिए, मैं डेवलपर्स को एक पूर्ण "सम्मान" भेजता हूं!

ब्लिंक कहाँ से आया?

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

एक साल से भी कम समय में, और मैं दिसंबर 2016 में एक समीक्षा लिख ​​रहा हूं, Blynk बड़ा होने में कामयाब रहा, सभी आवश्यक विशेषताओं को हासिल किया और, मुझे आशा है, विकास की समस्या को दूर करने में सक्षम था और एक पूर्ण निगम में बदल गया। . कम से कम अब Blynk न केवल व्यक्तियों के लिए, बल्कि कानूनी संस्थाओं के लिए भी पेश किया जाता है। विभिन्न प्रकार के उपयोगकर्ताओं के लिए मुद्रीकरण मॉडल भिन्न होते हैं, लेकिन इसके बारे में अधिक जानकारी नीचे दी गई है।

व्यापार मॉडल की विशिष्टता

तो पांच मिनट में एक फोन ऐप बनाने और अतिरिक्त पांच के लिए एक Arduino से लिंक करने में सक्षम होने के अलावा Blynk के बारे में और क्या अनोखा है? जो चीज इसे विशिष्ट बनाती है वह है एप्लाइड बिजनेस मॉडल। सॉफ्टवेयर की दुनिया में, उत्पादों के लिए उपयोग की मानक शर्तें स्वीकार की जाती हैं: फ्रीवेयर (फ्री), शेयरवेयर (परीक्षण अवधि के साथ शेयरवेयर), डोनेशनवेयर (यदि आप इसे पसंद करते हैं तो भुगतान करें), भुगतान किए गए उत्पाद। विभिन्न संयोजनों की अनुमति है, उदाहरण के लिए, निजी उपयोग के लिए, उत्पाद मुफ्त हो सकता है, जबकि कॉर्पोरेट क्षेत्र को प्रत्येक प्रति के लिए भुगतान करना होगा। हालांकि, अन्य प्रकार के लाइसेंस हैं, उदाहरण के लिए, कई ओपनसोर्स, जब उत्पाद को एक प्रकार का स्रोत कोड माना जाता है जो सभी के लिए उपलब्ध होता है। लेकिन आइए जंगलों में न जाएं और Blynk को करीब से देखें।

स्मार्टफ़ोन पर Blynk ऐप में इंटरफ़ेस

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

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

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

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

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

उपभोक्ता उत्पादों का प्रोग्राम योग्य जीवनकाल किसी भी निर्माता का पोषित सपना होता है। जिसे Blynk की मदद से हल करना बहुत ही आसान है। हालाँकि, और वह सब कुछ जो Blynk से संबंधित है।

बदले में क्या है?

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

वेब सर्वर

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

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

वेब सर्वर विकल्प का उपयोग करते समय, आपको क्लाइंट से प्रतिक्रियाओं को संसाधित करने और नियंत्रणों को HTML के रूप में प्रदर्शित करने की आवश्यकता होगी। हो सकता है कि यह Blynk के साथ उतनी सुंदर और तेज़ी से न निकले, लेकिन यह पूरी तरह से मुफ़्त है।

लाल मिर्च

Caynne (ब्राउज़र) में नियंत्रण कक्ष में आइटम जोड़ना

क्या किया गया था? केयेन विशेषज्ञों की मदद से, CayenneWiFiClient पद्धति को अतिभारित किया गया था, जिसमें एक केयेन ऑब्जेक्ट बनाने के लिए एक कंस्ट्रक्टर जोड़ा गया था, जिसमें केवल केयेन सेवा पर प्रमाणीकरण पहचानकर्ता पास किया गया था। इस मामले में, आपको स्वयं एक इंटरनेट कनेक्शन बनाने की आवश्यकता है।

मानक केयेन पुस्तकालय को अपग्रेड करना और संशोधित फ़ाइल को अपने स्केच के साथ निर्देशिका में रखना आवश्यक है:

#ifndef _CAYENNEESP8266WIFICLIENT_h #define _CAYENNEESP8266WIFICLIENT_h #include "CayenneClient.h" क्लास CayenneWiFiClient: सार्वजनिक CayenneClient (सार्वजनिक: /** * Cayenneid सत्र शुरू होता है * @param syennesid साइट से वाईफाई नेटवर्क प्रमाणीकरण टोकन * @param पास वाईफाई नेटवर्क प्रमाणीकरण टोकन पासवर्ड */ शून्य शुरू (कॉन्स्ट चार * टोकन, कॉन्स्ट चार * एसएसआईडी, कॉन्स्ट चार * पास) ( Blynk.begin (टोकन, एसएसआईडी, पास, CAYENNE_DOMAIN, CAYENNE_PORT); ) / * शून्य कॉन्फ़िगरेशन (कॉन्स्ट चार * ऑथ, कॉन्स चार * डोमेन = CAYENNE_DOMAIN, uint16_t पोर्ट = CAYENNE_PORT) (आधार::शुरू (प्रमाण); यह-> conn.begin (डोमेन, पोर्ट);) , CAYENNE_PORT); )); केयेनवाईफाई क्लाइंट केयेन; #अगर अंत

और स्केच ही:

#शामिल करना #define CAYENNE_PRINT सीरियल // प्रिंट को अक्षम करने और स्थान बचाने के लिए इसे कमेंट करें #include "CayenneDefines.h" #include "BlynkSimpleEsp8266.h" #include "CayenneESP8266WiFiClient.h" #define VIRTUAL_PIN V0 #define LEDPin D4 // ऑनबोर्ड एलईडी टोकन = "YourCayenneSecurityToke"; const char* ssid = "YourWiFiNetwork"; const char* पासवर्ड = "YourWiFiNetworkKeyPrase"; शून्य सेटअप () (// अपना सेटअप कोड यहां एक बार चलाने के लिए डालें: Serial.begin(115200); Serial.println("YaHoo..."); WiFi.mode(WIFI_STA); WiFi.begin(ssid, पासवर्ड ); जबकि (WiFi.waitForConnectResult() != WL_CONNECTED) ( Serial.println ("कनेक्शन विफल! रीबूटिंग ..."); देरी (5000); ESP.restart (); ) Cayenne.config (टोकन); पिनमोड ( LEDPin, OUTPUT); ) CAYENNE_IN (VIRTUAL_PIN) (int value = getValue.asInt (); // पूर्णांक के रूप में मान प्राप्त करें Serial.print ("वैल्यू प्राप्त V1P:"); Serial.print (मान); Serial.println (" "); अगर (मूल्य == 1) (डिजिटलवाइट (एलईडीपिन, कम);) और (डिजिटलवाइट (एलईडीपिन, हाई);)) शून्य लूप () (// अपना मुख्य कोड यहां रखें, बार-बार चलाने के लिए: Cayenne.run (); देरी (100); // सीरियल.प्रिंट ("।"); )

अगर ऊपर से कुछ भी स्पष्ट नहीं है, तो मैं समझाने की कोशिश करूंगा। सबसे पहले, केयेन Blynk पर निर्भर करता है… हाँ, Cayenne Blynk का उपयोग करता है, लेकिन उस एप्लिकेशन का नहीं जिसका मैंने ऊपर कुछ पैराग्राफों में वर्णन किया है, बल्कि MIT लाइसेंस के तहत जारी Blynk फ्रेमवर्क है। इस प्रकार, यह पता चला है कि Blynk एप्लिकेशन और Cayenne दोनों, एक तरह से या किसी अन्य, एक ही कार्य करते हैं। दरअसल, ऐसा ही है।

एक ब्राउज़र के माध्यम से देखे जाने पर केयेन में तैयार नियंत्रण कक्ष

परियोजनाओं के बीच का अंतर इस प्रकार है: Blynk मोबाइल एप्लिकेशन और एप्लिकेशन डेवलपमेंट में आसानी पर ध्यान केंद्रित करता है, Blynk पहले से ही सक्रिय रूप से मुद्रीकृत है। केयेन, मोबाइल एप्लिकेशन के अलावा, अपनी वेबसाइट पर पूरी तरह कार्यात्मक नियंत्रण कक्ष भी प्रदान करता है। और फिर भी अपने यूजर्स से पैसे कलेक्ट नहीं करता है। Cayenne की संचालन अवधारणा Blynk के समान है। एप्लिकेशन में या वेब ब्राउज़र के माध्यम से, उपयोगकर्ता एक प्रोजेक्ट बनाता है, बटन, लाइट बल्ब और अन्य संकेतक जोड़ता है जो आपके विशेष डिवाइस के वर्चुअल या वास्तविक पिन से जुड़े हो सकते हैं। इसके अतिरिक्त, केयेन में ट्रिगर्स और घटनाओं के लिए एक तंत्र है। ट्रिगर डिवाइस से प्राप्त ईवेंट को हैंडल करते हैं। और इवेंट मॉडल कैलेंडर शेड्यूल पर आधारित है।

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

टेबलेट पर केयेन ऑपरेटिंग पैनल इंटरफ़ेस

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

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

केयेन का परीक्षण करने के बाद, मैं कह सकता हूं कि मैं यह तय नहीं कर सका कि मुझे सिस्टम पसंद है या नहीं। एक तरफ, हाँ, उसे जो कुछ भी चाहिए वह सब जगह पर है। दूसरी ओर, मुझे लगातार लग रहा था कि यहाँ कुछ अधूरा है। यह समझ में आता है, प्रणाली नई है और सभी कार्यों के कार्यान्वयन के लिए कार्य योजना अभी तक पूरी नहीं हुई है। इससे भी ज्यादा परेशान करने वाली बात यह है कि बिना किसी प्रकाशन के फ्री ल्यूर के लिए इसे आज़माएं, लेकिन "परीक्षण" की अवधि समाप्त होने पर क्या होता है? कम से कम इस समय (दिसंबर 2016), केयेन का उपयोग आपके अपने उद्देश्यों के लिए बिना किसी शुल्क, ट्रेन, अपने स्वयं के एप्लिकेशन बनाने के लिए किया जा सकता है। और सबसे महत्वपूर्ण बात - बैटरी में ऊर्जा भंडारण के मामले में कोई प्रतिबंध नहीं।

कलाप्रवीण व्यक्ति

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

Blynk की तरह, Virtuino केवल यूजर इंटरफेस बनाने के लिए मोबाइल ऐप का उपयोग करता है। Cayenne और Blynk की तरह, Virtuino ऐप-इन-ऐप तकनीक का उपयोग करता है। इसका मतलब है कि आपका काम Virtuino के सैंडबॉक्स में रहता है और Virtuino के अलावा मौजूद नहीं हो सकता। लेकिन वर्चुइनो में भी दो प्रतिस्पर्धियों से अंतर है। वर्चुइनो एक मध्यवर्ती सर्वर का उपयोग नहीं करता है।

टैबलेट पर वर्चुइनो ऐप इंटरफ़ेस

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

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

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

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

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

निष्कर्ष

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

बेशक, किसी को कुल एकीकरण पर भरोसा नहीं करना चाहिए। स्मार्ट घरों की कहानी याद है? पूरा उछाल कब समाप्त हुआ? और सभी एक दूसरे के साथ सिस्टम की असंगति और स्पष्ट, एकीकृत मानक की कमी के कारण। IoT के साथ भी ऐसा ही जोखिम मौजूद है। सिद्धांत रूप में, हम किसी भी तरह स्मार्ट प्लग, रेफ्रिजरेटर और वाशिंग मशीन के बिना प्रबंधित करते हैं, और नई "स्मार्ट" सुविधाओं को जोड़ने से उपकरणों में अधिक मूल्य नहीं जुड़ता है। इसलिए, हम शराब बनाने की लड़ाई की बारीकी से निगरानी करेंगे, यह संभव है कि किसी व्यक्ति और डिवाइस के बीच संचार के उपरोक्त तरीकों में से एक हमारी आंखों के सामने जीत जाएगा। आइए देखें, देखते हैं।

विभिन्न प्रकार के माइक्रोकंट्रोलर और माइक्रो कंप्यूटरों की प्रोग्रामिंग करना, जैसे कि Arduino, रास्पबेरी पाई और इसी तरह, सबसे दिलचस्प और प्रासंगिक गतिविधियों में से एक है। इन प्लेटफार्मों पर डिजाइनिंग डिवाइस गीक्स और पेशेवर प्रोग्रामर के शौक से आगे निकल गए हैं: इन बोर्डों का उपयोग रोबोट, मशीन टूल्स, क्वाडकोप्टर, आईओटी डिवाइस (स्मार्ट होम), सर्वर और यहां तक ​​​​कि हाई-फाई ऑडियो इंटरफेस बनाने के लिए किया जाता है।

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

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

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

जो लोग चाहें वे सर्वर को स्थानीय रूप से स्थापित कर सकते हैं। इस मामले में, इंटरनेट का उपयोग की आवश्यकता नहीं है।

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

  • यूएसबी (सीरियल)
  • एडफ्रूट सीसी3000 वाईफाई,
  • आधिकारिक Arduino WiFi शील्ड,
  • आधिकारिक ईथरनेट शील्ड (W5100),
  • ENC28J60,
  • ESP8266 (वाईफाई मॉडम),
  • SeeedStudio ईथरनेट शील्ड V2.0 (W5200),
  • आरएन-एक्सवी वाईफाई,
  • ईएसपी8266।

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

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

आरंभ करने के लिए आवश्यक सभी जानकारी आधिकारिक वेबसाइट पर उपलब्ध है। Blynk है, ताकि हर कोई नई सुविधाओं के निर्माण में भाग ले सके। फिलहाल, सेवा का उपयोग पूरी तरह से नि: शुल्क है, भविष्य में स्थिति कुछ हद तक बदल जाएगी - मुख्य रूप से नए कार्यों के मुद्रीकरण के कारण। तो, यह पहले से ही ज्ञात है कि जीपीआईओ इंटरफेस तक पहुंच इन-ऐप खरीदारी के रूप में खरीदी जाएगी।

Blynk वर्तमान में निम्नलिखित बोर्डों के साथ काम करता है:

  • Arduino: Uno, Nano, Mini, Pro Mini, Pro Micro, Mega, YÚN (ब्रिज), ड्यू;
  • रास्पबेरी पाई;
  • कण (पूर्व स्पार्क कोर);
  • ईएसपी8266;
  • टाइनीडुइनो (सीसी3000);
  • दुष्ट जंगल की आग (CC3000)।

  • 220 ओम रोकनेवाला

सर्किट

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

  • डी13-101
  • D13- देय
  • D1-जेम्मा
  • D13 - इंटेल एडिसन
  • D13 - इंटेल गैलीलियो Gen2
  • D13 - लियोनार्डो और माइक्रो
  • D13 - लिलीपैड
  • D13 - लिलीपैड यूएसबी
  • D13-MEGA2560
  • D13 - मिनी
  • D6-MKR1000
  • D13-नैनो
  • D13-प्रो
  • D13-प्रो मिनी
  • D13- यूएनओ
  • D13 - यूनु
  • D13-शून्य

यदि आप इस स्केच के साथ एक बाहरी एलईडी को जलाना चाहते हैं, तो आपको इस सर्किट को बनाने की जरूरत है, जहां आप रोकनेवाला के एक छोर को डिजिटल पिन संवाददाता से जोड़ते हैं LED_BUILTINस्थिर। एलईडी के लंबे पैर (पॉजिटिव लेग, जिसे एनोड कहा जाता है) को रेसिस्टर के दूसरे सिरे से कनेक्ट करें। एलईडी के छोटे पैर (नकारात्मक पैर, जिसे कैथोड कहा जाता है) को जीएनडी से कनेक्ट करें। नीचे दिए गए आरेख में हम एक UNO बोर्ड दिखाते हैं जिसमें LED_BUILTIN मान के रूप में D13 है।

एलईडी के साथ श्रृंखला में रोकनेवाला का मान 220 ओम से भिन्न मान का हो सकता है; एलईडी 1K ओम तक के मूल्यों के साथ भी जलेगी।

ढांच के रूप में

कोड

सर्किट बनाने के बाद अपने Arduino या Genuino बोर्ड को अपने कंप्यूटर में प्लग करें, Arduino Software (IDE) शुरू करें और नीचे दिए गए कोड को दर्ज करें। आप इसे मेनू File/Examples/01.Basics/Blink से भी लोड कर सकते हैं। पहली चीज जो आप करते हैं वह है LED_BUILTIN पिन को लाइन के साथ आउटपुट पिन के रूप में प्रारंभ करना

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

मुख्य लूप में, आप एलईडी को लाइन से चालू करते हैं:

digitalWrite (LED_BUILTIN, हाई);

यह एलईडी एनोड को 5 वोल्ट की आपूर्ति करता है। यह एलईडी के पिनों में वोल्टेज अंतर पैदा करता है, और इसे रोशनी देता है। फिर आप इसे लाइन से बंद कर दें:

digitalWrite (LED_BUILTIN, LOW);

यह LED_BUILTIN पिन को वापस 0 वोल्ट पर ले जाता है, और LED को बंद कर देता है। चालू और बंद के बीच, आप किसी व्यक्ति को परिवर्तन देखने के लिए पर्याप्त समय चाहते हैं, इसलिए देरी() आदेश बोर्ड को 1000 मिलीसेकंड या एक सेकंड के लिए कुछ भी नहीं करने के लिए कहते हैं। जब आप देरी () कमांड का उपयोग करते हैं, तो उस समय के लिए और कुछ नहीं होता है। एक बार जब आप मूल उदाहरणों को समझ लेते हैं, तो यह जानने के लिए उदाहरण देखें कि अन्य काम करते समय देरी कैसे करें।

एक बार जब आप इस उदाहरण को समझ गए, तो बोर्ड से जुड़े स्विच को पढ़ने का तरीका जानने के लिए उदाहरण देखें।

तो, चलिए सीखना शुरू करते हैं। पहले पाठ में आपसे किसी सामग्री की आवश्यकता नहीं होगी और इसे केवल आपको ARDUINO की सादगी से परिचित कराने के लिए डिज़ाइन किया गया है। अधिकांश कार्यक्रमों की तरह, परिचय "हैलो वर्ल्ड!" से शुरू होता है। तो हम सबसे सरल - एलईडी फ्लैशिंग से शुरू करेंगे। इसके लिए आपको क्या चाहिए: ARDUINO बोर्ड, ARDUINO को कंप्यूटर से जोड़ने के लिए एक USB केबल, ARDUINO प्रोग्रामिंग शेल। शैल नए जारी किए गए हैं, लेकिन संस्करण 1.0.6 को सबसे स्थिर माना जाता है। डाउनलोडआप चालू कर सकते हैं आधिकारिक वेबसाइट. यह विंडोज़ संस्करण है, लिनक्स के लिए डाउनलोड करें। यह तुरंत समझने योग्य है कि अध्ययन जारी रखने के लिए, आपको एक ब्रेडबोर्ड (चीन में ऑर्डर करना या ऑनलाइन स्टोर में खरीदना) की आवश्यकता होगी, तार (आप उसी स्थान पर खरीद सकते हैं या पुरानी सिस्टम इकाइयां ढूंढ सकते हैं और तारों को बाहर निकाल सकते हैं) फ्रंट पैनल पर, इससे पहले कि फ्रंट पैनल पर यूएसबी सिंगल वायर से जुड़ा था और पूरे कनेक्टर से नहीं, वे वही हैं जो आपको सूट करेंगे - तार को बाहर निकालें, बोर्ड पर कनेक्टर्स से पिन को दूसरे छोर तक मिलाएं , फिर टांका लगाने वाले बिंदु पर हीट सिकुड़ते टयूबिंग का एक छोटा सा टुकड़ा डालें ताकि टांका लगाने वाले बिंदु पर तार न टूटे, गर्म हो जाए और आपके पास एक तैयार तार माँ (एक छेद के साथ प्लग) - पुरुष (बोर्ड से पिन) हो।

ARDUINO . के लिए घर का बना तार

इसी प्रकार पुरुष-पुरुष तार बनाते हैं, वे ब्रेडबोर्ड पर स्विच करने और ARDUINO को ब्रेडबोर्ड से जोड़ने के लिए उपयोगी होते हैं। वैसे, इस तरह के तारों को लूप के रूप में बनाना संभव है, यह ARDUINO को ब्लॉकों से जोड़ने के लिए बहुत अधिक सुविधाजनक है), और जिन ब्लॉकों के साथ आप काम करेंगे (चीन में या ऑनलाइन भी खरीदे गए हैं) स्टोर)। सेंसर और एक्चुएटर्स का चुनाव बहुत बड़ा है और यह आपकी कल्पना को सीमित नहीं करता है। लेकिन सबसे पहले, एक तापमान सेंसर पर्याप्त होगा डलास, संकेतक (आप निश्चित रूप से, 7-सेगमेंट एलईडी भी लगा सकते हैं, लेकिन वे 1602 से कई गुना अधिक करंट का उपभोग करते हैं, और यह बैटरी और बैटरी द्वारा संचालित होने पर नकारात्मक रूप से प्रभावित करेगा, और वे केवल डिजिटल जानकारी प्रदर्शित करते हैं), रिलेआपको जो कुछ भी चाहिए, आप हमेशा खरीद सकते हैं। जिनके पास धन की कमी नहीं है, उनके लिए तुरंत एक सेट खरीदना बेहतर है। हालांकि यह थोड़ा महंगा है, यह तुरंत सेंसर प्राप्त करने की सभी समस्याओं को दूर कर देता है और आप तुरंत उपकरणों का निर्माण करने में सक्षम होंगे। चुनाव अभी भी तुम्हारा होगा। ठीक है, बात कर रहे हैं, विषय के करीब।

हम ARDUINO को कंप्यूटर से जोड़ते हैं, प्रोग्राम चलाते हैं, प्रोग्राम में हम सर्विस-पे-अपना बोर्ड चुनें, बस-आप काम कर सकते हैं!

वैसे, एक चीनी क्लोन को एक चिप पर इकट्ठा किया जा सकता है ch340और आपके कंप्यूटर को USB पोर्ट के लिए ड्राइवर की आवश्यकता होगी। स्थापित करने के लिए, ड्राइवर डाउनलोड करें, अनपैक करें और, जब ड्राइवर के लिए कहा जाए, तो अनपैक की गई फ़ाइलों वाले फ़ोल्डर को इंगित करें।

समय बर्बाद किए बिना निम्न कार्य करें: फ़ाइल-उदाहरण-मूल बातें-ब्लिंक. एक नयी विंडो खुलेगी


ARDUINO . पर पलक झपकाएं

जिसमें आप प्रोग्राम देखते हैं, आप तुरंत एक तीर के साथ प्रोग्राम पैनल में दूसरे बटन पर क्लिक कर सकते हैं, प्रोग्राम को संकलित और ARDUINO में स्थानांतरित कर दिया जाएगा, बोर्ड पर एलईडी झपकने लगेगी! 1 सेकंड ऑन, 1 सेकंड ऑफ। कार्यक्रम पर ही विचार करें। आप सबसे पहले से चिह्नित टिप्पणियाँ देखेंगे /* मूलपाठ */ और //मूलपाठ . पहले का अर्थ है कि संकेत से पाठ /* साइन अप करने के लिए */ एक टिप्पणी है और संकलक बस संसाधित नहीं करता है और इस जानकारी को ध्यान में नहीं रखता है, ऐसे संयोजनों में कार्यक्रम का विवरण, इसके एल्गोरिदम, लेखकत्व, और बहुत कुछ लिखना बहुत सुविधाजनक है। संकेत // टिप्पणी केवल लाइन। इसके अलावा, आप इस संकेत को लाइन की शुरुआत में और प्रोग्राम की किसी भी लाइन के बाद लिख सकते हैं, लेकिन प्रोग्राम की लाइनों से पहले किसी भी स्थिति में - प्रोग्राम पूरी लाइन को एक टिप्पणी के रूप में नहीं मानेगा।

उदाहरण के लिए:

डिजिटलवाइट (13, हाई); // एलईडी चालू करें (उच्च वोल्टेज स्तर है)- सही

// एलईडी चालू करें (उच्च वोल्टेज स्तर है) digitalWrite (13, उच्च);- सही नहीं

यदि आप एक लाइन पर ऑपरेटर के सामने कोई टिप्पणी करना चाहते हैं, तो संयोजन का उपयोग करें /* मूलपाठ */ , वे। लाइन इस तरह दिखेगी: /* एलईडी चालू करें (उच्च वोल्टेज स्तर है) */ digitalWrite(13, High);

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

अगली चीज़ जो आप देखेंगे वह निम्नलिखित पाठ है:

// जब आप रीसेट दबाते हैं या बोर्ड को पावर देते हैं तो सेटअप फ़ंक्शन एक बार चलता है
व्यर्थ व्यवस्था()(
// आउटपुट के रूप में डिजिटल पिन 13 को इनिशियलाइज़ करें।
पिनमोड (13, आउटपुट);
}

टिप्पणी कहती है कि जब आप ARDUINO को रीसेट या री-पॉवर करते हैं तो सेटअप फ़ंक्शन केवल एक बार कॉल किया जाता है। वे। या तो बोर्ड पर ही रीसेट बटन दबाएं या पावर को फिर से कनेक्ट करें।

फिर आता है ऑपरेटर व्यर्थ व्यवस्था() (…।)- इस स्केच के लिए वास्तविक सेटिंग्स अनुभाग शुरू करना (यह ARDUINO के लिए कार्यक्रम का नाम है)।

अगली टिप्पणी में कहा गया है कि हम ARDUINO पिन 13 को आउटपुट के रूप में परिभाषित करते हैं। मैं आपको याद दिलाना चाहता हूं कि बोर्ड के पिन पृष्ठ पर वर्णित हैं, और इसलिए 13 वां आउटपुट डिजिटल है (जो आउटपुट के लिए कैप्शन में लिखा गया है) और केवल 2 स्टेट्स ले सकता है - ऑन (एक ही समय में, ए इसमें लगभग 5V का वोल्टेज लगाया जाता है), अर्थात तार्किक 1 (एक), या बंद (कोई वोल्टेज नहीं) यानी। बूलियन 0 (शून्य)। शून्य पर, पिन पर अभी भी एक छोटा वोल्टेज है, लेकिन तार्किक इकाई के संबंध में वे कम हैं। इसके अलावा, बोर्ड पर एक एलईडी एक रोकनेवाला के माध्यम से पिन 13 से जुड़ा हुआ है, यह वह है जो प्रोग्राम निष्पादित होने पर झपकाता है।

पिनमोड (13, आउटपुट);- पिनमोड - पिन मोड के रूप में अनुवाद करता है, 13 - पिन नंबर, आउटपुट - आउटपुट, यानी। लाइन का मतलब है कि पिन 13 आउटपुट के रूप में काम करेगा, OUTPUT, अगर आप INPUT लिखते हैं तो यह पहले से ही एक DIGITAL INPUT होगा, यानी। आप इस पिन पर आने वाले DIGITAL डेटा को प्रोसेस कर सकते हैं।

यदि आप श्रृंखला में 1kΩ रोकनेवाला के साथ 13 एक एलईडी को पिन से कनेक्ट करते हैं, और दूसरा पिन जीएनडी पिन से कनेक्ट करते हैं, तो एलईडी बोर्ड पर एलईडी के साथ फ्लैश करेगा। यदि यह पलक नहीं झपकाता है, तो एलईडी की ध्रुवीयता को उलट दें।

पोर्ट के साथ क्रियाओं का वर्णन करने वाला कार्यक्रम निम्नलिखित पंक्तियाँ हैं:

// लूप फ़ंक्शन हमेशा के लिए बार-बार चलता है
शून्य लूप () (
डिजिटलवाइट (13, हाई); // एलईडी चालू करें (उच्च वोल्टेज स्तर है)

डिजिटलवाइट (13, कम); // वोल्टेज कम करके एलईडी को बंद कर दें
देरी (1000); // एक सेकंड के लिए प्रतीक्षा करें


शून्य लूप () (…)
- कार्यक्रम का खंड जहां कार्य के लिए क्रियाओं का वर्णन किया गया है, इस चक्र में डेटा बदल सकता है और शर्तों के अनुसार संसाधित किया जा सकता है। टिप्पणी कहती है कि अगला चक्र हमेशा बार-बार निष्पादित किया जाएगा

डिजिटलवाइट (13, हाई);// एलईडी चालू करें (उच्च वोल्टेज स्तर है) - digitalWrite - एक डिजिटल सिग्नल लिखें, 13 - पिन नंबर, उच्च - उच्च स्तर, अर्थात। तार्किक इकाई (वोल्टेज 5V के बारे में), फिर एक टिप्पणी है कि हम एक उच्च तर्क स्तर के साथ एलईडी चालू करते हैं।

देरी (1000);// एक सेकंड के लिए प्रतीक्षा करें- देरी (देरी), 1000 मिलीसेकंड या 1 सेकंड प्रतीक्षा करें। आवश्यक ऑपरेटर, विशेष रूप से जब प्रसंस्करण बटन दबाता है, इस मामले में इसे पिन 13 चालू करने के बाद 1 सेकंड प्रतीक्षा करने के संकेत के रूप में उपयोग किया जाता है।

डिजिटलवाइट (13, कम);// वोल्टेज कम करके एलईडी को बंद करें - जैसे चक्र की पहली पंक्ति इंगित करती है कि पिन 13 को स्विच किया जाना चाहिए, केवल अब निम्न स्तर पर - निम्न स्तर, तार्किक शून्य (वोल्टेज लगभग 0V है)।

देरी (1000);// एक सेकंड के लिए प्रतीक्षा करें - फिर से लूप शुरू होने से पहले 1 सेकंड की देरी।

विलंब मानों को बदलने का प्रयास करें, आप देखेंगे कि स्विचिंग की अवधि और फ्लैश के बीच का ठहराव बदल जाता है।

कार्यक्रम सरल है, पहली बार से समझ में आता है, लेकिन इसमें कमियां हैं: विलंब ऑपरेटर ARDUINO को अपना काम पूरा करने तक प्रतीक्षा करता है, अर्थात। इस समय, एमके किसी भी डेटा को संसाधित नहीं करता है, बस बोल रहा है, यह ऑपरेटर के निष्पादन की प्रतीक्षा करता है, ठीक है अगर मान कम हैं, लेकिन अगर आपको डेटा को जल्दी से संसाधित करने की आवश्यकता है? 1 सेकंड के लिए, डेटा सौ से अधिक बार बदल सकता है, और एमके उन्हें ध्यान में नहीं रखता है, यह कार्यक्रम के निष्पादन की प्रतीक्षा करता है। आने वाले डेटा को याद न करने के लिए, आप निम्न स्केच का उपयोग कर सकते हैं। स्केच खोलना: फ़ाइल- उदाहरण- डिजिटल- बिना देरी के ब्लिंक करें. निम्न विंडो खुलेगी:

/* बिना देर किए पलक झपकाएं

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

सर्किट:
* संलग्न पिन 13 से जमीन पर एलईडी।
*ध्यान दें: अधिकांश Arduinos पर, बोर्ड पर पहले से ही एक LED होती है
यह पिन 13 से जुड़ा है, इसलिए इस उदाहरण के लिए किसी हार्डवेयर की आवश्यकता नहीं है।

2005 . बनाया गया
डेविड ए मेलिसो द्वारा
8 फरवरी 2010
पॉल स्टॉफ्रेजेन द्वारा
11 नवंबर 2013
स्कॉट फिट्जगेराल्ड द्वारा

यह उदाहरण कोड सार्वजनिक डोमेन में है।

http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/

// स्थिरांक नहीं बदलेगा। पिन नंबर सेट करने के लिए यहां उपयोग किया जाता है:
कॉन्स्ट इंट लेडपिन = 13; // एलईडी पिन की संख्या

// चर बदल जाएगा:
इंट एलईडीस्टेट = कम; // एलईडीस्टेट एलईडी सेट करने के लिए प्रयोग किया जाता है

// आम तौर पर, आपको समय रखने वाले चर के लिए "अहस्ताक्षरित लंबे" का उपयोग करना चाहिए
// एक इंट स्टोर करने के लिए मूल्य जल्दी से बहुत बड़ा हो जाएगा
अहस्ताक्षरित लंबे पिछलेमिलिस = 0; // पिछली बार एलईडी के अपडेट होने पर स्टोर करेगा

// स्थिरांक नहीं बदलेगा:
लंबा अंतराल = 1000; // अंतराल जिस पर पलक झपकना है (मिलीसेकंड)

व्यर्थ व्यवस्था()(

पिनमोड (एलईडीपिन, आउटपुट);
}

शून्य लूप ()
{




// एलईडी को ब्लिंक करें।

अगर (करंटमिलिस - पिछलामिलिस>= अंतराल) (


अगर (नेतृत्व == कम)
एलईडीस्टेट = उच्च;
अन्य
एलईडीस्टेट = कम;



}
}

सभी टिप्पणियों को छोड़ें और लाइन पर जाएँ:

// स्थिरांक नहीं बदलेगा। पिन नंबर सेट करने के लिए यहां उपयोग किया जाता है:
कॉन्स्ट इंट लेडपिन = 13;// एलईडी पिन की संख्या

टिप्पणी पंक्ति कहती है कि अचरों को नहीं बदला जाना चाहिए, अर्थात अचरों का नाम नहीं बदलना चाहिए। लेकिन आप अंक का अर्थ पिन नंबर बदल सकते हैं।

कॉन्स्ट इंट लेडपिन = 13; // LED पिन- कॉन्स्ट की संख्या का अर्थ है एक स्थिर, यानी एक स्थिर मान जिसे प्रोग्राम में नहीं बदला जा सकता है, पूर्णांक के लिए int- छोटा, एक डेटा प्रकार है जो -32768 से 32768 तक मान ले सकता है। इसके अलावा पूर्णांक के लिए, 5 और प्रकार के डेटा हैं। अंतर क्या है? वे आकार में भिन्न होते हैं, अर्थात्। उदाहरण के लिए, बाइट प्रकार के चर के लिए केवल 256 मान लिखे जा सकते हैं, आकार में अंतर int-2 बाइट्स है (ARDUINO DUE को छोड़कर, INT पहले से ही इसमें 4 बाइट्स लेता है, लेकिन -2147483648 से मान लेता है) 2147483647 तक), बाइट जैसा लिखा है - 1 बाइट। बड़े कार्यक्रमों में, स्मृति को सहेजना एक बहुत ही महत्वपूर्ण बिंदु है, और इसलिए यदि आप "प्रकाश" प्रकारों के साथ प्राप्त कर सकते हैं तो जहां भी संभव हो अधिक "भारी" प्रकारों का उपयोग करने से बचने का प्रयास करें। उदाहरण के लिए, बाइट प्रकार यहाँ पर्याप्त होगा। 13 0 और 255 के बीच की सीमा में फिट बैठता है, और बाकी डिजिटल पिन भी इस डेटा प्रकार में फिट होंगे। एलईडीपिन स्थिरांक का ही नाम है। 13 स्थिरांक का मान है, ऊपर टिप्पणी से यह स्पष्ट है कि इस स्थिरांक का उपयोग पिन का चयन करने के लिए किया जाएगा।

// चर बदल जाएगा:
इंट एलईडीस्टेट = कम;// एलईडीस्टेट एलईडी सेट करने के लिए प्रयोग किया जाता है

टिप्पणी कहती है कि कार्यक्रम में चर बदल जाएगा

इंट एलईडीस्टेट = कम;// एलईडीस्टेट एलईडी सेट करने के लिए प्रयोग किया जाता है - कम (तार्किक शून्य) के प्रारंभिक मूल्य के साथ एक एलईडीस्टेट चर घोषित करता है और एक टिप्पणी है कि एलईडी के लिए एलईडीस्टेट चर का उपयोग किया जाएगा (हमारी एलईडी नहीं)।

// आम तौर पर, आपको समय रखने वाले चर के लिए "अहस्ताक्षरित लंबे" का उपयोग करना चाहिए
// एक इंट स्टोर करने के लिए मूल्य जल्दी से बहुत बड़ा हो जाएगा
// पिछली बार एलईडी के अपडेट होने पर स्टोर करेगा

टिप्पणी कहती है कि आपको उस समय के लिए एक अहस्ताक्षरित लंबे चर का उपयोग करना चाहिए, अगली पंक्ति चेतावनी देती है कि एक int चर को संग्रहीत करने के लिए मान बहुत बड़ा होगा। अहस्ताक्षरित लंबे का उपयोग NUMBERS को संग्रहीत करने के लिए किया जाता है और 4 बाइट्स में 0 से 4294967295 तक के मूल्यों को संग्रहीत कर सकता है।

अहस्ताक्षरित लंबे पिछलेमिलिस = 0;// पिछली बार एलईडी को अपडेट किया गया था - एक वैरिएबल बनाता है पिछलामिलिस प्रकार का अहस्ताक्षरित लंबा और मान 0 निर्दिष्ट करता है, यह उस समय को संग्रहीत करेगा जब एलईडी की स्थिति अपडेट की गई थी।

// स्थिरांक नहीं बदलेगा:
लंबा अंतराल = 1000;// अंतराल जिस पर पलक झपकना है (मिलीसेकंड)

इसके अलावा, लंबे प्रकार का एक स्थिरांक, NUMBERS को संग्रहीत करने के लिए अभिप्रेत है, 4 बाइट्स लेता है और -2147483648 से 2147483647 तक मान ले सकता है, अंतराल चर का नाम है, 1000 चर का मान है। टिप्पणी कहती है कि यह मिलीसेकंड में ब्लिंकिंग अंतराल होगा।

व्यर्थ व्यवस्था()(
// डिजिटल पिन को आउटपुट के रूप में सेट करें:
पिनमोड (एलईडीपिन, आउटपुट);
}

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

खैर, कार्यक्रम का वास्तविक निकाय:

शून्य लूप ()
{
// यहां वह जगह है जहां आप कोड डालेंगे जिसे हर समय चलने की जरूरत है।

// यह देखने के लिए जांचें कि क्या एलईडी को ब्लिंक करने का समय है; अर्थात्, यदि
// वर्तमान समय और पिछली बार पलक झपकने के बीच का अंतर
// एलईडी उस अंतराल से बड़ा है जिस पर आप चाहते हैं
// एलईडी को ब्लिंक करें।

यहां टिप्पणियां बताती हैं कि कार्यक्रम कैसे काम करता है। वैसे, आप संयोजन का उपयोग कर सकते हैं /*मूलपाठ*/ हर लाइन पर लिखने के बजाय // . इसमें कहा गया है कि जब एलईडी के ब्लिंक करने पर करंट और आखिरी बार के बीच का अंतर निर्दिष्ट अंतराल से अधिक होता है, तो आपको एलईडी को फिर से जलाने की जरूरत होती है।

अहस्ताक्षरित लंबी वर्तमानमिलिस = मिली ();

अहस्ताक्षरित लंबे प्रकार का currentMillis चर घोषित किया गया है, जो ऑपरेटर डेटा को संग्रहीत करता है मिली (). मिली ()- एमके का आंतरिक ऑपरेटर इंगित करता है कि ARDUINO ने कितने मिलीसेकंड काम किया है।

अगर (करंटमिलिस - पिछलामिलिस>= अंतराल) (
// पिछली बार जब आपने एलईडी को ब्लिंक किया था तो बचाएं
पिछलामिलिस = करंटमिलिस;

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

अगर (शर्त == मान) (

शर्त पूरी होने पर कार्रवाई

अन्य(

शर्त पूरी नहीं होने पर कार्रवाई

== चिह्न किसी भी अन्य > चिह्नों में बदल सकता है,<,>=, <=, != (не равно). Условие как и значение может высчитываться. Если условие не выполнено то программа переходит в секцию else. Довольно часто секцию else не используют а просто пишут программу дальше. Это уже зависит от алгоритма работы программы и должно быть продумано заранее. Условий может быть сколько угодно и они могу быть вложены друг в друга, т.е. пока не выполнится одно условие- другое даже выполняться не начнет.

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

// अगर एलईडी बंद है तो इसे चालू करें और इसके विपरीत:
अगर (नेतृत्व == कम)
एलईडीस्टेट = उच्च;
अन्य
एलईडीस्टेट = कम;

इस खंड में, यह पता लगाया जाता है कि एलईडी की स्थिति क्या है, यदि एलईडी पर LOW लागू किया गया था, तो एलईडीस्टेट चर को उच्च मान दिया गया है, और इसके विपरीत (अनुभाग अन्य) यदि उच्च स्तर का उच्च था, तो एलईडीस्टेट चर को मान LOW सौंपा गया है। ध्यान दें कि if का उपयोग यहां () के बिना किया जाता है। इसकी अनुमति है यदि आपको निष्पादन अनुभाग में 1 से अधिक पंक्ति को संसाधित करने की आवश्यकता नहीं है।

// एलईडी को वेरिएबल के एलईडीस्टेट के साथ सेट करें:
digitalWrite (ledPin, LEDState);

और अंत में, हम वेरिएबल LEDPin (यह 13 के बराबर था) के मान को लिखते हैं, वेरिएबल ledState का मान। वे। इस स्ट्रिंग को digitalWrite(13, LOW) के रूप में लिखा जा सकता है; या डिजिटलवाइट (13, हाई); एमसी के संचालन समय पर निर्भर करता है। कृपया ध्यान दें कि digitalWrite ऑपरेटर का उपयोग किया जाता है - यह वह है जो इंगित करता है कि मान को तार्किक प्रारूप में पारित किया जाना चाहिए, अर्थात। शून्य या एक। यह और अधिक मूल्य नहीं ले सकता। कोई अन्य लीडस्टेट मान स्वचालित रूप से बूलियन 1 पर सेट हो जाएगा।

}
}

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

खैर, अब सबसे महत्वपूर्ण बात। कुछ समय के बाद, पर्याप्त बजाकर, आप कहेंगे, "एक प्रकाश बल्ब को झपकाने का क्या मतलब है ... मैं इसका उपयोग कहां कर सकता हूं? केवल एक संकेतक है कि डिवाइस काम कर रहा है ... "आप पूरी तरह से सही नहीं होंगे। आपके पास एक उपकरण है, आप इसके साथ क्या कर सकते हैं यह केवल आपकी गलती है यदि आप कुछ भी नहीं सोच सकते हैं। यह किसी भी व्यक्ति को औजारों का एक पूरा सेट देने और उन्हें कुछ करने के लिए कहने जैसा है, उदाहरण के लिए, एक आदमी को बढ़ईगीरी के औजारों का एक सेट सौंपना, कोई अपने पूरे जीवन में उसी बोर्ड की योजना बनाएगा, जिस स्वच्छता के साथ विमान के विमान और लोहे के टुकड़े को जितनी जल्दी हो सके तेज करने की कोशिश कर रहा है, और फिर कोई इस समय उच्च गुणवत्ता वाले फर्नीचर बना देगा। आप किसे तय करेंगे यह आप पर निर्भर है। एक और सलाह जो मैंने कहीं पढ़ी है, मुझे याद भी नहीं है, "समस्याओं की तलाश मत करो, उनके समाधान की तलाश करो!" यदि आप इस दृष्टिकोण का उपयोग करते हैं, तो आपके पास कैसे और क्यों बहुत कम होगा। खैर, अब चमकती एलईडी के बारे में। विभिन्न संकेतकों का उपयोग करने के तरीके के बारे में इंटरनेट पर बहुत सारी युक्तियां हैं, बेशक यह सुंदर है, यह लेखक को कुछ महत्व देता है, आदि ... लेकिन यह सबसे महत्वपूर्ण चीज को छूता है - पिन और मेमोरी को सहेजना। संकेतक 1602 को जोड़ने के लिए, आपको 6 डिजिटल पिन + 2 बिजली के तार लेने होंगे! यह तब है जब आप I2C प्रोटोकॉल का उपयोग नहीं करते हैं। इसके अलावा, LCD पर लाइब्रेरी 4kB लेती है। और कोई भी आगे की कार्यक्षमता के बारे में नहीं सोचता है, ठीक है, उन्होंने संकेतक के साथ खेला और बस इतना ही, उन्होंने इसे भी छोड़ दिया। निश्चित रूप से किसी ने नहीं सोचा था कि एक एलईडी के साथ सभी आवश्यक जानकारी प्राप्त करना संभव है? उदाहरण के लिए त्रुटियां। एक फ़ंक्शन लिखें और उसमें एक त्रुटि कोड पास करें। यह सुविधाजनक है - आपको कोड को फिर से अलग करने की आवश्यकता नहीं है, लेकिन बस देखें कि उस तरह से क्या काम नहीं करता है। या, उदाहरण के लिए, मेरे दोस्त ने ARDUINO मिनी पर एक गैस बॉयलर नियंत्रक को इकट्ठा किया, अर्थात। घर में तापमान के अनुसार (डलास सेंसर द्वारा रिकॉर्ड किया गया), परिसंचरण पंप चालू / बंद किया गया था। जब पंप बंद कर दिया गया, तो बॉयलर 40 डिग्री सेल्सियस तक गर्म हो गया और इग्नाइटर पर खड़ा हो गया, कमरे में तापमान गिर गया - पंप चालू हो गया और जब शीतलक ठंडा हो गया, तो बॉयलर अपने आप चालू हो गया। बहुत सुविधाजनक और एक महत्वपूर्ण गैस बचत थी! कुल मिलाकर, लगभग 200-300 रूबल के लिए, उन्होंने हर दिन कई क्यूबिक मीटर गैस बचाई! फिर वह सोचता रहा - बिना वाईफाई और कंप्यूटर को जोड़े कमरे में तापमान को कैसे ट्रैक किया जाए, मैंने सुझाव दिया - एलईडी को जितनी बार कमरे में डिग्री हो उतनी बार झपकाएं ... वे हंसे बेशक - आप एक गलती कर सकते हैं 20-25 बार गिनने के बाद, मैंने सुझाव दिया - इसे पहले दसियों डिग्री झपकाएँ और एक विराम के बाद - इकाइयाँ, उदाहरण के लिए 24 डिग्री, पहले 2 बार पलकें झपकाएँ, एक विराम के बाद एक और 4। हर चीज़! कोई और संकेतक नहीं! और इसे किसी भी क्षेत्र में लागू किया जा सकता है! गैर-मानक दृष्टिकोण देखें और ऊर्जा और इनपुट बचाने की कोशिश करें। भले ही आप I2C का उपयोग कर रहे हों। MK और विशेष रूप से ARDUINO में महारत हासिल करने के लिए सभी को शुभकामनाएँ।

अगर आपको कोई त्रुटि मिलती है, तो कृपया टेक्स्ट का एक टुकड़ा चुनें और Ctrl+Enter दबाएं।