विंडोज़ पर arduino uno ड्राइवर स्थापित करना 7. Arduino कैसे काम करता है

या बल्कि, इसके चीनी समकक्ष।

चीनी समकक्ष और मूल के बीच आवश्यक अंतर इसकी कीमत है। मूल Arduino UNO की आधिकारिक वेबसाइट पर वर्तमान में $ 24.95 की लागत है, जबकि डिलीवरी वाले चीनी समकक्ष की कीमत मुझे $ 3 (8 गुना सस्ता) से कम है। इसके एनालॉग के साथ मूल की अधिक विस्तृत तुलना अगले लेख में होगी, लेकिन अब, मुख्य लक्ष्यों से दूर नहीं जाने के लिए, आइए शुरू करें।



एक पीसी से कनेक्ट करना और ड्राइवर को स्थापित करना।

इस तथ्य के कारण कि Arduino के इस चीनी एनालॉग में, USB से कनेक्ट करने के लिए एक चिप का उपयोग किया जाता है CH340G, प्रदान किए गए ड्राइवर मूल Arduino और उनके एनालॉग्स के लिए उपयुक्त नहीं हैं, जिनमें एक माइक्रोक्रिकिट होता है ATMEGA16U2.


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

संग्रह डाउनलोड करें, फ़ाइल को अनपैक करें और चलाएं CH341SER.EXE. चुनना इंस्टॉल.


ड्राइवर इंस्टालेशन के दौरान एलईडी फ्लैश होगी। आरएक्स, स्थापना के बाद एक संबंधित संदेश दिखाई देगा, "क्लिक करें" ठीक है".

डिवाइस मैनेजर में एक नया डिवाइस दिखाई देगा" यूएसबी-सीरियल CH340"। मेरे मामले में, पोर्ट से जुड़ा डिवाइस COM7, हर किसी के पास कोई अन्य पोर्ट नंबर हो सकता है, मुख्य बात यह है कि इसे भविष्य के काम के लिए याद रखना है।

पहला स्केच।

Arduino प्रोग्राम को स्केच कहा जाता है। Arduino को एक स्केच लिखने के लिए, आपको इसे कंप्यूटर पर इंस्टॉल करना होगा। Arduino विकास पर्यावरण. नवीनतम संस्करण डाउनलोड करें और अनपैक करें। एक फ़ाइल के साथ विकास के माहौल का शुभारंभ arduino.exe.

डिफ़ॉल्ट प्रोग्राम रूसी इंटरफ़ेस से भरा हुआ है।

कोई भिन्न भाषा चुनने के लिए, मेनू आइटम का उपयोग करें " फ़ाइल" - "समायोजन".

सूची में" संपादक भाषा"आप कोई अन्य भाषा चुन सकते हैं, क्लिक करें" ठीक है" और विकास पर्यावरण को पुनरारंभ करें। रचना में बेलारूसी, यूक्रेनी और अन्य भाषाएं शामिल हैं।


आपको यह भी जांचना होगा कि Arduino प्लेटफॉर्म सही ढंग से चुना गया है, इसके लिए हम " औजार" – "भुगतान करना:"मैंने एंडुइनो यूएनओ को डिफ़ॉल्ट रूप से सही ढंग से चुना था, अगर आपके पास कुछ और है, तो सूची से अपना मंच चुनें।


आपको सही पोर्ट भी चुनना होगा जिससे हमारा प्लेटफॉर्म जुड़ा हुआ है। ऐसा करने के लिए, ड्राइवर की स्थापना के दौरान, मैंने इस पर ध्यान दिया (आपको डिवाइस मैनेजर में पोर्ट को देखने की आवश्यकता है)। मेरे मामले में यह COM7. अभी इसमें " औजार" - "पत्तन:"आपको सही पोर्ट निर्दिष्ट करने की आवश्यकता है।

अब आइए Arduino पर अपना पहला स्केच चलाने का प्रयास करें, जो एलईडी को झपकाएगा।

विकास पर्यावरण के इस संस्करण में पहले से ही सरल रेखाचित्रों का संग्रह है, जिनमें से हमारा स्केच है।
ऐसा करने के लिए, पर जाएँ " फ़ाइल" - "नमूने" - "01. मूल बातें" – "झपकी".

प्रोग्राम कोड एक नई विंडो में खुलेगा। अब हमारे कार्यक्रम के लिए एलईडी तैयार करते हैं। कई बोर्डों पर, मेरी तरह, वांछित एलईडी पहले से ही बाकी रेडियो घटकों के साथ मिलाप किया गया था ...


लेकिन ऐसे बोर्ड हो सकते हैं जिनमें यह एलईडी नहीं है, ऐसे में आपको इसे बोर्ड पर लगे पिन के माध्यम से जोड़ना होगा। आइए सबसे आम रंगीन एलईडी लें और इसे एक सीमित अवरोधक 220Ohm - 1Kom के माध्यम से बोर्ड पर पिन से कनेक्ट करें 13 तथा जीएनडी(एलईडी को Arduino से जोड़ने की प्रक्रिया में, USB केबल को डिस्कनेक्ट करने की अनुशंसा की जाती है)।


जब सब कुछ तैयार हो जाता है, तो यह एलईडी को माइक्रोकंट्रोलर में ब्लिंक करने के लिए प्रोग्राम डाउनलोड करने के लिए रहता है। डेवलपर वातावरण में, बटन पर क्लिक करें " भार", स्केच को एंडुइनो पर अपलोड करने के लिए।

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

एंडुइनो को बंद करने के लिए, यूएसबी केबल से बोर्ड को डिस्कनेक्ट करने के लिए पर्याप्त है।

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

सिद्धांत रूप में, यह सार्वभौमिक है और इस पर बड़ी संख्या में परियोजनाओं को लागू किया जा सकता है।

आएँ शुरू करें!

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

अब आप Arduino ide खोल सकते हैं और हमारे सामने तुरंत संपादक विंडो दिखाई देगी। 1) संपादक विंडो वह जगह है जहाँ हम कोड लिखेंगे।

2) स्थिति विंडो, त्रुटियां और हमारे कार्यक्रम के बारे में अन्य जानकारी और बोर्ड को फर्मवेयर अपलोड करने की प्रक्रिया यहां प्रदर्शित की जाएगी।

3) टूलबार, आदि।

वैसे, विचारधारा रूसी भाषा का समर्थन करती है, जिसे इसके विकास में मदद करनी चाहिए। अब देखते हैं कि क्या सब कुछ ठीक है और टूल्स -> बोर्ड्स टैब पर जाएं। वहां, हमारे बोर्ड को तुरंत चुना जाना चाहिए:


यदि नहीं, तो इसे मैन्युअल रूप से चुनें।

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

उसके बाद, निम्न कोड रहेगा:

सी++

शून्य सेटअप () (पिनमोड (13, आउटपुट);) शून्य लूप () (डिजिटलवाइट (13, हाई); देरी (1000); डिजिटलवाइट (13, कम); देरी (1000);)

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

पिनमोड (13, आउटपुट);

शून्य लूप () (

यदि आपको कोई त्रुटि मिलती है: बोर्ड को डाउनलोड करने में कोई समस्या है, तो निराश न हों, यह एक आसान समाधान है। ऐसा करने के लिए, टूल्स -> पोर्ट -> पर जाएं और वहां हम उस पोर्ट का चयन करते हैं जिसके आगे Arduino / Genuino Uno कोष्ठक में लिखा गया है और नियंत्रक को फिर से फ्लैश करने का प्रयास करें। अगर कुछ काम नहीं करता है, तो टिप्पणियों में लिखें, हम इसका पता लगा लेंगे।

आइए अब पता करें कि हमने आर्डिनो में क्या डाला है।

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

विकास के माहौल ने हमारे लिए कोड के इस हिस्से को अपने आप उत्पन्न किया, यहां, घुंघराले ब्रेसिज़ के बीच, इनपुट प्रारंभ किए जाते हैं, बोर्ड का आउटपुट, हमारे मामले में, यह पिनमोड (13, आउटपुट) कहता है; इसका मतलब है कि हम उस बोर्ड का पिन 13 असाइन करते हैं जिससे एलईडी जुड़ा हुआ है (जिसके बारे में हमने पिछले लेख में बात की थी) आउटपुट के लिए।

कोड का यह हिस्सा भी स्वचालित रूप से उत्पन्न होता है, घुंघराले ब्रेसिज़ के बीच कोड लिखा जाता है जिसे हमारा प्रोग्राम सीधे अनिश्चित काल तक निष्पादित करेगा। अर्थात् यह एक अंतहीन चक्र है। यह कहता है digitalWrite(13, High); , जिसका रूसी में अर्थ है 13 को पिन करने के लिए 5 वोल्ट लगाना, यह क्रिया एलईडी को रोशन करती है।

देरी (1000); यह देरी, अगले निर्देश के निष्पादन को 1000 मील सेकंड (1 सेकंड) के लिए रोक देती है।

डिजिटलवाइट (13, कम); 13 पिन को जमीन पर खींचता है, रूसी में 5 वोल्ट निकालता है, जिससे एलईडी का विलुप्त होना होता है।

और चूंकि शून्य लूप () एक अनंत लूप है, Arduino पर प्रकाश अंतहीन रूप से झपकाएगा!

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

ऐसा करने के लिए, हमें arduino के लिए फर्मवेयर लिखना होगा और परीक्षण के लिए पोर्ट मॉनिटर का उपयोग करना होगा, और फिर हम C # में एक प्रोग्राम लिखेंगे लेकिन यह अगले लेख में होगा।

Arduino में प्रोग्राम नहीं चमक रहे हैं

किसी प्रोग्राम को कंप्यूटर से Arduino में स्थानांतरित करने की प्रक्रिया में, कई घटक शामिल होते हैं। यदि उनमें से कम से कम एक सही ढंग से काम नहीं करता है, तो फर्मवेयर प्रक्रिया टूट जाएगी। विशेष रूप से, फर्मवेयर प्रक्रिया इस पर निर्भर करती है: Arduino ड्राइवर, डिवाइस मॉडल और Arduino वातावरण में पोर्ट चयन, बोर्ड से भौतिक कनेक्शन, 8U2 कंट्रोलर फर्मवेयर (Arduino Uno और Mega 2560) पर, डिवाइस के मुख्य माइक्रोकंट्रोलर का बूटलोडर, फ्यूज बिट सेटिंग्स, आदि। डी। किसी विशेष घटक के समस्या निवारण के लिए नीचे कुछ सुझाव दिए गए हैं।

Arduino पर्यावरण

  • सुनिश्चित करें कि आपका Arduino मॉडल टूल्स> बोर्ड मेनू में चुना गया है। यदि आपके पास Arduino Uno है, तो उपयुक्त आइटम का चयन करें। यह भी ध्यान रखें कि Arduino Duemilanove के बाद के मॉडल ATmega328 माइक्रोकंट्रोलर के साथ आते हैं, जबकि पुराने संस्करण ATmega168 के साथ आते हैं। यह पता लगाने के लिए कि आपके Arduino में किस नियंत्रक का उपयोग किया गया है - माइक्रोकंट्रोलर (बोर्ड पर सबसे बड़ी चिप) पर शिलालेख पढ़ें। बोर्ड मेनू के बारे में अधिक जानकारी Arduino Development Environment अनुभाग में मिल सकती है।
  • फिर जांचें कि टूल्स> सीरियल पोर्ट मेनू में सही पोर्ट चुना गया है (यदि पोर्ट दिखाई नहीं देता है, तो पुनरारंभ करने का प्रयास करें आईडीईकंप्यूटर से जुड़ा डिवाइस)। पर मैक कंप्यूटर, सीरियल पोर्ट कुछ इस तरह दिखना चाहिए: /dev/tty.usbmodem621 (Arduino Uno या Mega 2560) या /dev/tty.usbserial-A02f8e (एक FTDI चिप के साथ Arduino के पुराने संस्करणों के लिए)। Linux पर: /dev/ttyACM0 या समान (Arduino Uno या Mega 2560) या /dev/ttyUSB0 (Arduino के पुराने संस्करणों के लिए)। विंडोज़ पर, यह एक COM पोर्ट होगा, लेकिन डिवाइस मैनेजर में चुनने से पहले, आपको यह जांचना होगा कि कौन सा Arduino से जुड़ा हुआ है। यदि ये पोर्ट सूचीबद्ध नहीं हैं, तो ड्राइवरों पर अगला अनुभाग देखें।

ड्राइवरों

ड्राइवर कंप्यूटर पर एप्लिकेशन सॉफ़्टवेयर (यानी Arduino वातावरण) को इससे जुड़े हार्डवेयर (Arduino बोर्ड) के साथ संचार करने की अनुमति देते हैं। Arduino के संबंध में, ड्राइवर सिस्टम में वर्चुअल सीरियल पोर्ट (या वर्चुअल COM पोर्ट) बनाने के लिए ज़िम्मेदार हैं। Arduino Uno और Mega 2560 ATmega8U2 माइक्रोकंट्रोलर के साथ ऑपरेटिंग सिस्टम के मानक ड्राइवर (USB CDC) का उपयोग करते हैं। अन्य Arduino बोर्ड, जहां FTDI चिप USB-UART कनवर्टर की भूमिका निभाता है, FTDI के ड्राइवरों का उपयोग करता है।

यह जांचने का सबसे आसान तरीका है कि ड्राइवर सही तरीके से स्थापित हैं या नहीं, Arduino को पीसी से कनेक्ट करना और विकास के वातावरण में टूल्स> सीरियल पोर्ट मेनू को खोलना है। Arduino को जोड़ने के बाद, नए मेनू आइटम यहां दिखाई देने चाहिए। इस मामले में, इससे कोई फर्क नहीं पड़ता कि कौन सा पोर्ट नाम Arduino को सौंपा जाएगा।

  • विंडोज 7 (विशेष रूप से 64-बिट संस्करण) पर, आपको डिवाइस मैनेजर में जाने और Arduino Uno या Mega 2560 ड्राइवरों को अपडेट करने की आवश्यकता हो सकती है। ऐसा करने के लिए, डिवाइस मैनेजर में डिवाइस पर राइट-क्लिक करें (बोर्ड होना चाहिए कंप्यूटर से कनेक्टेड) ​​और विंडोज को फिर से संबंधित .inf फाइल को इंगित करें। यह फ़ाइल Arduino सॉफ़्टवेयर के ड्राइवर/फ़ोल्डर में स्थित है (FTDI USB ड्राइवर उपनिर्देशिका में नहीं)।
  • यदि आपको Windows XP के तहत Arduino Uno या Mega 2560 ड्राइवर स्थापित करते समय निम्न त्रुटि मिलती है: "सिस्टम निर्दिष्ट फ़ाइल नहीं ढूंढ सकता", तो इस समाधान का प्रयास करें ("RunOnce" कुंजी को रजिस्ट्री शाखा "HKEY_LOCAL_MACHINE\SOFTWARE\" में जोड़ने के बारे में Microsoft\Windows\ CurrentVersion")।
  • Linux पर, Arduino Uno और Mega 2560 को /dev/ttyACM0 डिवाइस के रूप में परिभाषित किया गया है, जो Arduino सीरियल वातावरण द्वारा उपयोग किए जाने वाले RXTX लाइब्रेरी के मानक संस्करण द्वारा समर्थित नहीं हैं। इसलिए, इस वातावरण के Linux संस्करण में एक पैच RXTX पुस्तकालय शामिल है, जो /dev/ttyACM* उपकरणों के साथ भी काम करता है। एक विशेष (11.04) भी है जिसमें ऐसे उपकरणों के लिए समर्थन शामिल है। यदि आप मानक RXTX पैकेज का उपयोग कर रहे हैं, तो आपको सिस्टम में /dev/ttyACM0 से /dev/ttyUSB0 (उदाहरण के लिए) में एक प्रतीकात्मक लिंक बनाने की आवश्यकता है - फिर सीरियल पोर्ट Arduino वातावरण में दिखाई देगा।

सीरियल पोर्ट एक्सेस

  • विंडोज़ पर: यदि प्रोग्राम स्टार्टअप पर खुलने या क्रैश होने में लंबा समय लेता है, या इसमें टूल्स मेनू को खोलने में बहुत अधिक समय लगता है, तो डिवाइस मैनेजर में, सभी ब्लूटूथ सीरियल पोर्ट और अन्य नेटवर्क COM पोर्ट को अक्षम करने का प्रयास करें। टूल्स मेनू को शुरू या खोलते समय, Arduino विकास वातावरण क्रमशः आपके कंप्यूटर पर सभी सीरियल पोर्ट को स्कैन करता है, ऐसे नेटवर्क पोर्ट की उपस्थिति कभी-कभी प्रोग्राम के फ्रीज या क्रैश का कारण बन सकती है।
  • सुनिश्चित करें कि आपके पास कोई सीरियल स्कैनर प्रोग्राम नहीं चल रहा है, जैसे कि यूएसबी सेल्युलर वाईफाई डोंगल (जैसे स्प्रिंट या वेरिज़ोन से), पीडीए सिंक ऐप, ब्लूटूथ यूएसबी ड्राइवर (जैसे ब्लूसोलिल), वर्चुअल डेमॉन आदि।
  • सुनिश्चित करें कि सीरियल पोर्ट को ब्लॉक करने का कारण फ़ायरवॉल नहीं है (उदाहरण के लिए, ज़ोन अलार्म)।
  • Arduino और PC (उदाहरण के लिए, प्रोसेसिंग, PD, vvvv, आदि) के बीच USB के माध्यम से भेजे गए डेटा की निगरानी करने वाले सभी प्रोग्राम को बंद करना भी आवश्यक है।
  • लिनक्स पर: Arduino वातावरण को रूट के रूप में चलाने का प्रयास करें, कम से कम अस्थायी रूप से, यह देखने के लिए कि क्या यह Arduino को फ्लैश करने में मदद करता है या नहीं।

बोर्ड से शारीरिक संबंध

  • सबसे पहले, सुनिश्चित करें कि Arduino चालू है (lit हरी एलईडी) और एक कंप्यूटर से जुड़ा है।
  • Mac कंप्यूटर पर, कुछ समस्याएँ होती हैं जब Arduino को जोड़नायूएसबी हब के माध्यम से यूनो और मेगा 2560। यदि "टूल्स> सीरियल पोर्ट" मेनू में कुछ भी दिखाई नहीं देता है, तो बोर्ड को सीधे कंप्यूटर से कनेक्ट करने का प्रयास करें और पुनरारंभ करें अरुडिनो आईडीई.
  • फर्मवेयर की अवधि के लिए, सभी उपकरणों को डिजिटल पिन 0 और 1 से डिस्कनेक्ट करें, क्योंकि ये पिन कंप्यूटर से Arduino कनेक्शन इंटरफ़ेस से जुड़े हैं (कोड को नियंत्रक को सफलतापूर्वक फ्लैश करने के बाद, उन्हें फिर से उपयोग किया जा सकता है)।
  • सभी उपकरणों को डिस्कनेक्ट करके Arduino को फ्लैश करने का प्रयास करें (बिल्कुल यूएसबी केबल को छोड़कर)।
  • सुनिश्चित करें कि बोर्ड किसी भी प्रवाहकीय धातु की वस्तुओं के संपर्क में नहीं है।
  • एक अलग यूएसबी केबल आज़माएं, कभी-कभी वे विफल भी हो जाते हैं।

ऑटो रीसेट

  • यदि आपका अरुडिनो ऑटो-रीसेट सुविधा का समर्थन नहीं करता है, तो सुनिश्चित करें कि आपने फ्लैशिंग से कुछ सेकंड पहले बोर्ड को रीसेट कर दिया है। (Arduino Diecimila, Duemilanove और Nano ऑटो-रीसेट का समर्थन करते हैं, जैसे लिलीपैड, प्रो और प्रो मिनी 6-पिन प्रोग्रामिंग कनेक्टर के साथ)।
  • कृपया ध्यान दें: कुछ Arduino Diecimila गलती से गलत बूटलोडर के साथ फ्लैश हो गए थे। ऐसे मॉडलों को प्रोग्राम लोड करने से पहले रीसेट बटन को भौतिक रूप से दबाने की आवश्यकता होती है; इस पर और अधिक के लिए नीचे देखें।
  • कुछ कंप्यूटरों पर, आपको Arduino वातावरण में अपलोड बटन दबाने के बाद रीसेट बटन (बोर्ड पर) को दबाने की आवश्यकता होती है। नल के बीच अलग-अलग समय अंतराल के साथ प्रयोग - लगभग 2 सेकंड के अंतराल के साथ 0 से 10 सेकंड या उससे अधिक तक।
  • यदि आपको यह त्रुटि मिलती है: "डिवाइस ठीक से प्रतिसाद नहीं दे रहा है।" प्रोग्राम को फिर से फ्लैश करने का प्रयास करें (दूसरे शब्दों में, बोर्ड को रीसेट करें और फिर से अपलोड बटन दबाएं)।

लोडर

  • सुनिश्चित करें कि आपके Arduino में बूटलोडर है। ऐसा करने के लिए, बस अपने डिवाइस को पुनरारंभ करें। अंतर्निर्मित एलईडी (नियंत्रक के 13वें पिन से जुड़ा) फ्लैश होना चाहिए। यदि ऐसा नहीं होता है, तो सबसे अधिक संभावना है कि आपके बोर्ड में बूटलोडर नहीं है।

यदि प्रोग्राम अभी भी फ्लैश नहीं करते हैं, तो फोरम पर एक प्रश्न पूछें। कृपया अपने संदेश में निम्नलिखित जानकारी शामिल करें:

  • आपके ऑपरेटिंग सिस्टम का संस्करण।
  • अपने Arduino का प्रकार। यदि यह एक मिनी, लिलीपैड, या अन्य मॉडल है जिसमें अतिरिक्त तारों की आवश्यकता होती है, तो यदि संभव हो तो अपने सर्किट की एक तस्वीर शामिल करें।
  • क्या आप पहले बोर्ड को सफलतापूर्वक फ्लैश कर पाए हैं। यदि हां, तो कृपया बताएं कि बोर्ड के काम करना बंद करने से पहले आपने उसके साथ क्या किया, क्या सॉफ़्टवेयरक्या आपने हाल ही में अपने कंप्यूटर से इंस्टॉल या अनइंस्टॉल किया है?
  • संदेश जो Arduino में प्रोग्राम लोड करने का प्रयास करते समय दिखाई देते हैं। संदेश प्राप्त करने के लिए, टूलबार पर अपलोड बटन पर क्लिक करते हुए Shift कुंजी दबाए रखें।

"बिल्ड फ़ोल्डर गायब हो गया या लिखा नहीं जा सका" त्रुटि होती है (मैक ओएस एक्स पर)

क्या आपने Arduino.app को डिस्क छवि (जैसे एप्लिकेशन फ़ोल्डर में) से निकाला है? यदि नहीं, तो आप उदाहरण डाउनलोड नहीं कर पाएंगे।

Mac पर जावा अपडेट के बाद Arduino प्रारंभ नहीं होगा

आखिरी बात जावा अद्यतनऐप्पल देशी पुस्तकालयों के 64-बिट संस्करणों का उपयोग करने का प्रयास करता है। हालाँकि, Arduino सॉफ़्टवेयर RXTX लाइब्रेरी के 32-बिट संस्करण का उपयोग करता है। Arduino प्रारंभ करते समय, निम्न त्रुटि होती है:

मुख्य विधि में ध्यान में न आया अपवाद: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: कोई उपयुक्त छवि नहीं मिली। क्या मिला: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: यूनिवर्सल रैपर में कोई मैचिंग आर्किटेक्चर नहीं

इस समस्या को हल करने के लिए, Finder विंडो में Arduino एप्लिकेशन (यानी Arduino 16.app) पर क्लिक करें और फ़ाइल मेनू से Get Info चुनें। पैनल पर, "32 बिट मोड में खोलें" बॉक्स को चेक करें। उसके बाद, Arduino वातावरण सामान्य रूप से शुरू होना चाहिए।

प्रोग्राम को संकलित करते समय, एक java.lang.StackOverflowError होती है

Arduino IDE नियमित अभिव्यक्तियों के साथ कोड में हेरफेर करके आपके स्केच को प्रीप्रोसेस करता है। कभी-कभी पाठ की कुछ पंक्तियाँ इस प्रक्रिया को विफल कर देती हैं। यदि आपको इस तरह की त्रुटि दिखाई देती है:

Java.lang.StackOverflowError पर java.util.Vector.addElement(अज्ञात स्रोत) java.util.Stack.push (अज्ञात स्रोत) पर com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java) पर

com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) पर com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) ) पर com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher._match. java) com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) पर com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) पर com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher._match(Perl5Matcher) पर ।जावा)

तो ठीक यही स्थिति है। "डबल कोट्स", "सिंगल कोट्स", बैकस्लैश \, कमेंट आदि से जुड़े असामान्य वर्ण अनुक्रमों के लिए कोड की जाँच करें। उदाहरण के लिए, लापता उद्धरण या, उदाहरण के लिए, ऐसा अनुक्रम "\"" (""" के बजाय) .

जब बोर्ड बाहरी स्रोत (Arduino Diecimila मॉडल या पहले) से संचालित होता है तो स्केच नहीं चलता है

चूंकि RX पिन डिस्कनेक्ट हो गया है, Arduino बूटलोडर डेटा के बजाय शोर प्राप्त कर सकता है, जिसका अर्थ है कि यह कभी भी समय समाप्त नहीं होगा और, तदनुसार, प्रोग्राम शुरू नहीं होगा। इस समस्या को हल करने के लिए, RX पिन को 10 kΩ रेसिस्टर (या RX और TX पिन को जोड़ने) के साथ जमीन से जोड़ने का प्रयास करें।

प्रोग्राम को फ्लैश करने का प्रयास करते समय Arduino विकास वातावरण (विंडोज़ पर) जम जाता है

Arduino और Logitech "LVPrcSrv.exe" प्रक्रिया के बीच विरोध के कारण यह समस्या हो सकती है। कार्य प्रबंधक खोलें और इसे प्रक्रियाओं की सूची में खोजें। यदि यह वहां है, तो आपको प्रोग्राम को फ्लैश करने से पहले प्रक्रिया को पूरा करना चाहिए।

Arduino चालू नहीं होता है (ग्रीन पावर एलईडी प्रकाश नहीं करता है)

यदि आप Arduino Diecimila या USB (जैसे NG) के साथ पुराने का उपयोग कर रहे हैं, तो सुनिश्चित करें कि बोर्ड पर जम्पर (USB कनेक्टर के पास प्लास्टिक का छोटा हिस्सा) सही ढंग से सेट है। यदि बोर्ड बाहरी शक्ति स्रोत (उपयुक्त कनेक्टर से जुड़ा) से संचालित होता है, तो जम्पर को उन दो पिनों को बंद कर देना चाहिए जो पावर कनेक्टर के करीब हैं। यदि बोर्ड USB द्वारा संचालित है, तो जम्पर को उन दो पिनों को बंद कर देना चाहिए जो USB कनेक्टर के करीब हैं। जब बोर्ड USB से संचालित होता है तो यह चित्र जम्पर की स्थिति दिखाता है।

(पोस्ट और तस्वीर के लिए एमआरबीबीपी का धन्यवाद)

Arduino Diecimila पर प्रोग्राम स्टार्टअप में बहुत अधिक समय लगता है (6-8 सेकंड)

कुछ Arduino Diecimila बोर्डों पर, Arduino NG बूटलोडर गलती से फ्लैश हो गया था। यह ठीक काम करता है, केवल बोर्ड को रीसेट करने के बाद इसका लंबा समय समाप्त होता है (क्योंकि Arduino NG स्वचालित रीसेट को लागू नहीं करता है, जिसके लिए फर्मवेयर प्रक्रिया के मैन्युअल सिंक्रनाइज़ेशन की आवश्यकता होती है)। आप पिन 13 से जुड़े एलईडी द्वारा एनजी से बूटलोडर को पहचान सकते हैं: Arduino NG में, बोर्ड को रीसेट करने के बाद, यह 3 बार झपकाता है, और डायसीमिला में - 1 बार। यदि आपके डायसीमिला में एनजी से बूटलोडर स्थापित है, तो स्केच वैन को चमकाने से पहले, आपको बोर्ड पर स्थित रीसेट बटन को भौतिक रूप से दबाने की आवश्यकता है। डिवाइस में सही डायसीमिला बूटलोडर को फ्लैश करना भी संभव है, अधिक विवरण के लिए बूटलोडर पृष्ठ देखें।

विंडोज़ पर arduino.exe लॉन्च करते समय त्रुटि

यदि Windows के अंतर्गत arduino.exe चलाते समय कोई त्रुटि उत्पन्न होती है, जैसे कि:

Arduino को एक समस्या का सामना करना पड़ा है और उसे बंद करने की आवश्यकता है।

फिर run.bat फ़ाइल का उपयोग करके Arduino को प्रारंभ करने का प्रयास करें। कृपया धैर्य रखें Arduino परिवेश को प्रारंभ करने में कुछ समय लगता है।

Arduino Mac OS X के पुराने संस्करणों पर काम क्यों नहीं करता है?

अगर आपको इस तरह की त्रुटि मिलती है:

लिंक (dyld) त्रुटि: dyld: /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino अपरिभाषित प्रतीक: /Applications/arduino-0004/librxtxSerial.jnilib अपरिभाषित संदर्भ _printf$LDBL128 में परिभाषित होने की उम्मीद है / usr/lib/libSystem.B.dylib

तो आपको शायद अपने सिस्टम को Mac OS X 10.3.9 या बाद के संस्करण में अपडेट करना होगा। पुराने सिस्टम लाइब्रेरी Arduino के साथ संगत नहीं हैं।

संदेश के लिए Gabe462 को धन्यवाद।

Arduino वातावरण प्रारंभ करते समय, एक असंतुष्ट लिंक त्रुटि उत्पन्न होती है (librxtxSerial.jnilib पुस्तकालय के बारे में एक संदेश के साथ)

यदि आपको Arduino प्रारंभ करते समय निम्न त्रुटि मिलती है:

मुख्य विधि में ध्यान में न आया अपवाद: java.lang.UnsatisfiedLinkError: मूल पुस्तकालय /उपयोगकर्ता/अनु/डेस्कटॉप/arduino-0002/librxtxSerial.jnilib पहले से ही किसी अन्य वर्ग लोडर में लोड

तो आपके पास शायद लाइब्रेरी का पुराना संस्करण है जो कनेक्शन के लिए ज़िम्मेदार है। /System/Library/Frameworks/JavaVM.framework/ फ़ोल्डर में या CLASSPATH और PATH पर्यावरण चर में सूचीबद्ध निर्देशिकाओं में com.jar या jcl.jar फ़ाइलों की तलाश करें। (अनुराग सहगल द्वारा खोजा गया बग)

"मुख्य वर्ग नहीं ढूंढ सका" त्रुटि का क्या अर्थ है?

यदि Arduino को प्रारंभ करते समय निम्न त्रुटि होती है:

जावा वर्चुअल मशीन लॉन्चर: मुख्य वर्ग नहीं मिल सका। प्रोग्राम निकल जाएगा।

जांचें कि क्या आपने Arduino .zip की सामग्री को सही ढंग से अनपैक किया है - विशेष रूप से, सुनिश्चित करें कि lib फ़ोल्डर सीधे Arduino निर्देशिका के अंदर स्थित है और इसमें pde.jar फ़ाइल है।

विंडोज़ पर साइबरविन संघर्षों से कैसे निपटें?

यदि आपकी मशीन पर साइबरविन पहले से स्थापित है, तो जब आप Arduino वातावरण में स्केच को संकलित करने का प्रयास करते हैं, तो निम्न त्रुटि हो सकती है:

6? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** घातक त्रुटि - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** सिस्टम साझा स्मृति संस्करण बेमेल का पता चला - 0x75BE0084/0x75BE009C।

साइगविन डीएलएल के असंगत संस्करणों के उपयोग के कारण यह समस्या सबसे अधिक संभावना है।

विंडोज सर्च (स्टार्ट -> फाइंड) में, cygwin1.dll टाइप करें और सबसे हाल के संस्करण को छोड़कर सभी मिली फाइलों को हटा दें। नवीनतम संस्करण x:\cygwin\bin फ़ोल्डर में स्थित होना चाहिए, जहां "x" वह ड्राइव है जहां साइबरविन वितरण स्थापित किया गया था। यह भी अनुशंसा की जाती है कि आप अपने कंप्यूटर को पुनरारंभ करें।

यह भी सुनिश्चित करें कि जब Arduino वातावरण चल रहा हो तो साइबरविन प्रक्रियाओं में नहीं बैठा है। आप Arduino फ़ोल्डर से cygwin1.dll फ़ाइल को निकालने का प्रयास भी कर सकते हैं और इसे मौजूदा cygwin वितरण से cygwin1.dll फ़ाइल से बदल सकते हैं (जो संभवतः c:\cygwin\bin फ़ोल्डर में स्थित है)।

Arduino वातावरण और टूल मेनू लंबे समय तक खुला रहता है (Windows पर)

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

उपकरण टूल्स में प्रकट नहीं होता है | आनुक्रमिक द्वार

यदि आप USB से Arduino का उपयोग कर रहे हैं, तो सुनिश्चित करें कि FTDI चिप के लिए ड्राइवर सही तरीके से स्थापित हैं (इंस्टॉलेशन निर्देश देखें)। यदि आप एक नियमित Arduino (USB के बिना) के साथ USB-UART एडेप्टर का उपयोग कर रहे हैं, तो जांचें कि क्या इस एडेप्टर के लिए ड्राइवर स्थापित हैं।

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

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

विंडोज़ सिस्टम पर, अरुडिनो द्वारा असाइन किया गया COM पोर्ट नंबर बहुत बड़ा हो सकता है। उपयोगकर्ता ज़ेवलैंड से:

"उन लोगों के लिए एक छोटा नोट जो एक उच्च COM पोर्ट नंबर के साथ एक Arduino प्रोग्राम फ्लैश नहीं कर सकते हैं: FTDI चिप से जुड़े पोर्ट नंबर को कम करने का प्रयास करें।"

"मेरे सिस्टम में ब्लूटूथ एडेप्टर से वर्चुअल COM पोर्ट का एक गुच्छा है, इसलिए Arduino को COM17 सौंपा गया था। IDE Arduino को नहीं ढूंढ सका, इसलिए मैंने कंट्रोल पैनल (XP के तहत) में अन्य वर्चुअल पोर्ट हटा दिए और पोर्ट बदल दिया। FTDI चिप के लिए COM2। बस सुनिश्चित करें कि arduino असाइन किए गए पोर्ट का उपयोग कर रहा है और आपको ठीक होना चाहिए।"

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

क्या gnu.io.PortInUseException कोड फ्लैश करते समय या "सीरियल मॉनिटर" (मैक सिस्टम पर) में फेंक दिया जाता है?

सीरियल के अंदर त्रुटि। () gnu.io.PortInUseException: gnu.io.CommPortIdentifier.open (CommPortIdentifier.java:354) पर प्रोसेसिंग.एप.सीरियल पर अज्ञात एप्लिकेशन। (सीरियल.जावा:127) प्रोसेसिंग.एप.सीरियल पर। (सीरियल.जावा:72)

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

यदि यह त्रुटि प्रसंस्करण वातावरण में, या Arduino संस्करण 0004 या इससे पहले के संस्करण में होती है, तो आपको macosx_setup.command स्क्रिप्ट चलाने और कंप्यूटर को पुनरारंभ करने की आवश्यकता है। Arduino 0004 में, यह स्क्रिप्ट बदल गई है, और सभी उपयोगकर्ताओं को इसे चलाना चाहिए (यहां तक ​​कि जिन्होंने उसी स्क्रिप्ट को चलाया जो Arduino संस्करण 0003 के साथ आई थी)। आपको /var/spool/uucp फ़ोल्डर की सामग्री को भी हटाना होगा।

USB FTDI ड्राइवरों के साथ समस्याएँ उत्पन्न होती हैं

Arduino को चालू या रीसेट करते समय स्केच प्रारंभ नहीं होता है

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

फर्मवेयर सफल प्रतीत होता है, लेकिन कुछ भी काम नहीं करता

आपने उपकरण > माइक्रोकंट्रोलर मेनू से किसी उपकरण का गलत चयन किया है। सुनिश्चित करें कि आपके द्वारा चुना गया माइक्रोकंट्रोलर आपके बोर्ड (ATmega8 या ATmega168) से मेल खाता है - नियंत्रक मॉडल सबसे बड़ी चिप पर सूचीबद्ध है।

सुनिश्चित करें कि बिजली की आपूर्ति स्थिर है। हस्तक्षेप या पावर आउटेज स्केच अपलोड त्रुटियों का कारण बन सकता है।

और एक संभावित कारण- आपके डिवाइस के लिए स्केच का आकार बहुत बड़ा है। एक स्केच अपलोड करते समय, Arduino 0004 यह देखने के लिए जांच करता है कि प्रोग्राम को लोड करने के लिए ATmega8 की मेमोरी में पर्याप्त जगह है या नहीं। उसी समय, Arduino इस तथ्य के आधार पर अपनी गणना करता है कि नियंत्रक मेमोरी में लोडर 1 KB पर कब्जा कर लेता है। शायद आपके डिवाइस में 1 केबी के बजाय 2 केबी बूटलोडर का पुराना संस्करण फ्लैश किया गया है, फिर एटीमेगा 8 माइक्रोकंट्रोलर की 8 केबी फ्लैश मेमोरी में से 2 केबी पहले से ही कब्जा कर लिया जाएगा। तदनुसार, इस मामले में, स्केच का केवल एक हिस्सा नियंत्रक में लोड किया जाएगा, लेकिन प्रोग्राम इसे प्राथमिकता नहीं जानता है, जिससे डिवाइस के निरंतर रीसेट हो जाएंगे।

यदि आपके पास एक प्रोग्रामर (समानांतर पोर्ट या AVR-ISP के लिए) है, तो आप टूल्स का उपयोग करके माइक्रोकंट्रोलर में बूटलोडर संस्करण को अपडेट कर सकते हैं। बूटलोडर जलाएं। अन्यथा, आप कॉन्फ़िगरेशन फ़ाइल के अंदर स्थित upload.maximum_size चर में प्रोग्राम मेमोरी की उपलब्ध मात्रा निर्दिष्ट करके Arduino पर्यावरण सेटिंग्स को आसानी से समायोजित कर सकते हैं (इस फ़ाइल को कहां ढूंढें इसके लिए निर्देश देखें)। वहां निर्दिष्ट मान 7168 को 6144 में बदलें, जिसके बाद स्वीकार्य स्केच आकार से अधिक होने पर विकास पर्यावरण आपको सही ढंग से चेतावनी देगा।

मैं फर्मवेयर का आकार कैसे कम कर सकता हूं?

Arduino में ATmega168 माइक्रोकंट्रोलर एक काफी सस्ता मॉडल है जिसमें केवल 16 KB प्रोग्राम मेमोरी है, जो वास्तव में बहुत अधिक नहीं है (जिसमें से 2 KB पहले से ही बूटलोडर द्वारा लिया गया है)।

यदि आप अपने प्रोग्राम में फ्लोटिंग पॉइंट कैलकुलेशन का उपयोग करते हैं, तो पूर्णांक गणनाओं का उपयोग करने के लिए कोड को फिर से लिखने का प्रयास करें - इससे लगभग 2 KB मेमोरी की बचत होगी। कार्यक्रम की शुरुआत में, सभी अप्रयुक्त पुस्तकालयों के #include निर्देशों को हटा दें।

यह भी जांचें कि क्या प्रोग्राम कोड को छोटा करने के लिए अनुकूलित किया जा सकता है।

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

3, 5, 6, 9, 10, और 11 के अलावा किसी भी पिन पर एनालॉगवर्इट () फ़ंक्शन को कॉल करते समय कोई पीडब्लूएम सिग्नल (एनालॉग आउटपुट) उत्पन्न नहीं होता है

Arduino माइक्रोकंट्रोलर (ATmega168) में, PWM / AnalogWrite () के लिए हार्डवेयर समर्थन केवल कुछ पिनों पर लागू किया जाता है। इसलिए, किसी भी अन्य नियंत्रक पिन पर analogWrite () फ़ंक्शन को कॉल करने का परिणाम होगा उच्च स्तरसंकेत (5 वी - 128 से अधिक मूल्यों के लिए), या कम स्तर(0 वी - 128 से कम मूल्यों के लिए)। ATmega8 माइक्रोकंट्रोलर के साथ Arduino के पुराने संस्करणों में, PWM समर्थन केवल 9, 10 और 11 पिन पर लागू किया गया है।

अघोषित कार्यों या प्रकारों के बारे में त्रुटियाँ क्यों होती हैं?

Arduino विकास वातावरण उपयोगकर्ता द्वारा परिभाषित कार्यों के प्रोटोटाइप स्वचालित रूप से उत्पन्न करने का प्रयास करता है, ताकि उन्हें आपके प्रोग्राम में किसी भी क्रम में रखा जा सके। हालांकि, प्रोटोटाइप प्रक्रिया सही नहीं है और कभी-कभी भ्रमित करने वाली बग की ओर ले जाती है।

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

यदि आप एक ऐसा फ़ंक्शन घोषित करते हैं जो 16-बिट परिणाम देता है (उदाहरण के लिए, "अहस्ताक्षरित int"), तो पर्यावरण यह नहीं समझेगा कि यह एक फ़ंक्शन है और तदनुसार, इसका प्रोटोटाइप नहीं बनाएगा। इस मामले में, आपको इसे मैन्युअल रूप से लिखना होगा, या इस फ़ंक्शन की घोषणा को उपरोक्त प्रोग्राम कोड में रखना होगा - इससे पहले कि इसे प्रोग्राम में पहली बार बुलाया जाए।

प्रोग्राम को फ्लैश करने का प्रयास करते समय, एक त्रुटि होती है "अमान्य डिवाइस हस्ताक्षर"

अगली त्रुटि:

अवरुड: ओह! अमान्य डिवाइस हस्ताक्षर। कनेक्शन दोबारा जांचें और फिर से प्रयास करें, या इस चेक को ओवरराइड करने के लिए -F का उपयोग करें।

इसका मतलब दो चीजों में से एक हो सकता है: या तो आपके पास टूल्स> बोर्ड मेनू में गलत बोर्ड चुना गया है, या आप avrdude के गलत संस्करण का उपयोग कर रहे हैं। Arduino पर रेखाचित्र अपलोड करने के लिए, avrdude के थोड़े संशोधित संस्करण का उपयोग किया जाता है। मानक संस्करण डिवाइस को एक प्रारूप में पहचानने के लिए अनुरोध भेजता है जिसे Arduino बूटलोडर नहीं समझता है, जो एक त्रुटि की ओर जाता है। इसलिए सुनिश्चित करें कि आप एवार्ड के सटीक संस्करण का उपयोग कर रहे हैं जो Arduino के साथ आता है (

Arduino प्लेटफॉर्म का मूल एक माइक्रोकंट्रोलर चिप है जिसे ATmega328 के रूप में जाना जाता है।

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

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

प्रोसेसर संचालन की आवृत्ति 16 मेगाहर्ट्ज घड़ी जनरेटर द्वारा निर्धारित की जाती है। यूएसबी कनेक्टर के माध्यम से बिजली की आपूर्ति की जा सकती है। बिना काम करना Arduino USB बिजली की आपूर्तिएक अलग 7 से 12 वी बिजली की आपूर्ति की आवश्यकता होती है (यह वोल्टेज एक ऑनबोर्ड नियामक द्वारा आवश्यक स्तरों पर सामान्यीकृत किया जाता है, इसलिए आपको इसके लिए एक सस्ती बिजली आपूर्ति की आवश्यकता होती है)। बोर्ड पर, 5V और 3.3V दोनों के वोल्टेज स्तर उपयोगकर्ता के लिए उपलब्ध हैं, जिससे अधिकतम 50mA करंट खींचा जा सकता है।

Arduino मेमोरी में तीन प्रकार होते हैं: फ्लैश मेमोरी, जहां प्रोग्राम 32 KB संग्रहीत होता है; टक्कर मारना(एसआरएएम) 2 केबी, जहां प्रोसेसर प्रोग्राम में इस्तेमाल किए गए वेरिएबल्स को स्टोर और ओवरराइट करता है; और 1 केबी की रीड-ओनली मेमोरी (ईईपी-रोम), जहां प्रोग्रामर डेटा स्टोर कर सकता है जो नियंत्रक के पुनरारंभ होने पर रहना चाहिए (जैसे फ्लैश मेमोरी, जहां प्रोग्राम संग्रहीत है)। आज के कंप्यूटरों की तुलना में, जो कम से कम कुछ गीगाबाइट को संभालते हैं, 35kb हास्यास्पद लगता है, लेकिन यह वास्तव में अधिकांश उद्देश्यों के लिए पर्याप्त है। एक ऑपरेटिंग सिस्टम की कमी के कारण, मेमोरी का उपयोग पूरी तरह से आपकी जिम्मेदारी है: यदि कोई मेमोरी ओवरफ्लो होता है या एक गैर-मौजूद मेमोरी लोकेशन एक्सेस किया जाता है, तो आपका प्रोग्राम अप्रत्याशित रूप से व्यवहार कर सकता है, और डिबगिंग के दौरान इसे ट्रैक करना काफी मुश्किल है। आपको अपने प्रोग्राम में हमेशा वेरिएबल की संख्या को नियंत्रण में रखना चाहिए।

ATmega328 प्रोसेसर 14 असतत I/O पोर्ट (क्रमांक 0 से 13), 6 एनालॉग इनपुट और एक USB पोर्ट से जुड़ा है। असतत I/O is बिजली का संपर्क, जिसमें दो बूलियन अवस्थाएँ हो सकती हैं: 1 और 0, या TRUE और FALSE, या, जैसा कि Arduino सिंटैक्स, निम्न और उच्च। यदि सिग्नल कम मान में है, तो संबंधित पिन में 0 V की शून्य क्षमता होती है - अर्थात, से जुड़ा होता है आम तार. अगर सिग्नल हाई है, तो इस पिन और ग्राउंड के बीच वोल्टेज लेवल 5 V है।

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

पिन 3, 5, 6, 9, 10 और 11 को पीडब्लूएम आउटपुट के रूप में इस्तेमाल किया जा सकता है और कुछ एनालॉग सेटिंग्स हैं। तदनुसार, उनकी मेमोरी कोशिकाओं में 0 और 255 के बीच मान होते हैं।

अंजीर। 1 Arduino UNO, जैसा कि ऊपर और नीचे से दिखता है। पीठ पर इटली के नक्शे पर ध्यान दें।

पिन 13 भी बोर्ड पर एलईडी से जुड़ा है। जब सिग्नल कम होता है, तो एलईडी बंद हो जाती है, और यदि सिग्नल उच्च है, तो एलईडी चालू है।

डिजिटल I/Os के रूप में मानक उपयोग के अलावा, पिन 10, 11, 12 और 13 बाहरी बाह्य उपकरणों के साथ संचार करने की क्षमता प्रदान करते हैं।

एनालॉग इनपुट को A0 ... A5 लेबल किया जाता है: उनमें से प्रत्येक में 10 बिट्स का डिजिटल रिज़ॉल्यूशन होता है,

यानी, वे 0 और 5V के बीच किसी भी वोल्टेज को 0 और 1023 के बीच की संख्या में परिवर्तित करते हैं जिसे मेमोरी में एक्सेस किया जा सकता है।

सभी प्लेटफार्म 60.6 मिमी × 53.4 मिमी मापने वाले बोर्ड पर लगे होते हैं और इसका वजन 25 ग्राम (चित्र 1) से अधिक नहीं होता है।

बोर्डों में यूएसबी ए/बी कनेक्टर भी होते हैं जिनके साथ आप संचार के लिए उन्हें कंप्यूटर से कनेक्ट कर सकते हैं। USB कनेक्शन कंप्यूटर से कनेक्ट होने पर Arduino को भी शक्ति प्रदान करता है, इसलिए आरंभ करने के लिए आपको किसी बाहरी शक्ति स्रोत की आवश्यकता नहीं होती है।

कार्यक्रम

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

ये सभी उपकरण एक आईडीई (एकीकृत विकास पर्यावरण) कार्यक्रम में शामिल हैं, मुफ्त

Arduino वेबसाइट से डाउनलोड करने के लिए: अपने कंप्यूटर का ऑपरेटिंग सिस्टम चुनें और प्रोग्राम डाउनलोड करें। यह अधिकांश नियमित कंप्यूटर प्रोग्रामों की तरह ही दिखता है। इसमें विभिन्न विंडो पर कई टैब हैं। इनमें से एक विंडो का उपयोग प्रोग्राम को संपादित करने के लिए किया जाता है। इसे Arduino शब्दजाल में स्केच कहा जाता है। रेखाचित्र सरलीकृत C++ में लिखे गए हैं।


अंजीर। 2 Arduino प्रोग्राम एक विंडो के रूप में प्रकट होता है जिसमें आप प्रोग्राम का टेक्स्ट दर्ज कर सकते हैं, जिसे केवल एक स्केच कहा जाता है।

आप अपने स्केच को इसमें संकलित कर सकते हैं Arduino प्रोग्राम(चित्र 2) विंडो के ऊपरी बाएँ कोने में सत्यापन बटन पर क्लिक करके: संकलन प्रक्रिया C++ प्रोग्राम को ATmega328 प्रोसेसर के संबंधित मशीन कोड में बदल देती है। एक बार संकलित होने के बाद, निष्पादन योग्य स्केच को USB केबल के माध्यम से अपलोड बटन दबाकर Arduino मेमोरी में अपलोड किया जा सकता है। यदि एक से अधिक उपलब्ध हैं तो आपको मेनू से उपयुक्त COM पोर्ट का चयन करने की आवश्यकता हो सकती है। एक स्केच लोड करना हमेशा संकलक को पहले चलाने का कारण बनता है। डाउनलोड पूरा होने के तुरंत बाद स्केच शुरू हो जाता है।

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