Arduino uno वर्चुअल कॉम पोर्ट नहीं दिखाता है। समस्या निवारण Arduino के साथ शुरुआत करना। Mac पर जावा अपडेट के बाद Arduino प्रारंभ नहीं होगा

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

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

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

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

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

यदि आपका नक्शा सही ढंग से काम कर रहा है, तो आप इस पृष्ठ के अगले भाग पर जा सकते हैं . फिर कार्ड को अलग करें और फिर से इकट्ठा करें। पूरा होने पर, संपादक और कंसोल के बीच एक संदेश दिखाई देता है जिसमें कहा गया है कि बर्न सफल रहा। आपका नक्शा अब लोड हो गया है!

भविष्य के प्रोग्रामर्स के लिए आपके जीवन को आसान बनाने के लिए, यहां कुछ सुझाव दिए गए हैं। त्रुटि जानकारी सक्रिय करें। . वास्तव में, यदि आपके प्रोग्राम में कोई त्रुटि है, जब आप अपने प्रोग्राम को संकलित या लोड करना चाहते हैं, तो विंडो के नीचे एक त्रुटि संदेश दिखाई देगा। कुछ मामलों में, यह संदेश समस्या की पहचान करने के लिए पर्याप्त स्पष्ट या सटीक नहीं है, ऐसे में त्रुटि संदेशों के बारे में अधिक जानकारी बहुत व्यावहारिक हो सकती है।

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

लाइन नंबर प्रदर्शित करें और कोड बैकअप सक्रिय करें। . वास्तव में, ताकि जब यह लंबा हो जाए तो अपने आप को अपने कोड में न खोएं, लाइन नंबर आपको बताएगा कि कौन सी रेखा आपके कोड का वह हिस्सा है और आपको वहां और अधिक आसानी से वापस आने देती है।

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

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

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

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

  • यह आपको संदर्भ के समान फ्रेम को ठीक करते हुए, तनाव को मापने की अनुमति देता है।
  • दो अन्य केबल डेटा ट्रांसफर प्रदान करते हैं।
  • काला आम विद्युत भूमि है।
यह न्यूनतम है।

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

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

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

विद्युत संकेत और प्रोटोकॉल

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

तो सेट मानों से ऊपर के सभी वोल्टेज, इसलिए -3V और 3V के बीच, -25V से नीचे और 25V से ऊपर, सीमा से बाहर हैं। बहुत अधिक वोल्टेज उपकरण को नुकसान पहुंचा सकता है। जब -3 वी से -3 वी तक के वोल्टेज को नजरअंदाज कर दिया जाता है, तो इन क्षेत्रों में अधिकांश और यहां तक ​​कि लगभग सभी परजीवी पाए जाते हैं। यह ट्रांसमिशन त्रुटियों से बचने का एक तरीका है।

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

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

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

Arduino को कंप्यूटर से कनेक्ट करना

जब सीरियल लिंक पर कोई संचार नहीं होता है, तो तथाकथित निष्क्रिय अवस्था होती है। यानी हमेशा एक तार्किक स्तर होता है। यह तार्किक स्तर है। वोल्टेज -3V और -25V के बीच होने दें। यदि यह राज्य निष्क्रिय चालगुम है, कनेक्शन की समस्या हो सकती है।

सीरियल पोर्ट से गुजरने वाला डेटा बाइनरी रूप में प्रसारित होता है। आप शायद इसके बारे में नहीं जानते होंगे, लेकिन कीबोर्ड से एक अक्षर 8 बिट्स में एन्कोडेड होता है, इसलिए एक बाइट। असल में यह वास्तव में 7 बिट्स है जो इसे एन्कोड किया गया है, लेकिन एन्कोडिंग के सामने 0 जोड़कर यह अपना मान रखता है और अक्षर को 8 बिट्स में एन्कोड करने की अनुमति देता है। इस प्रकार, कीबोर्ड के प्रत्येक वर्ण के लिए, आप 8 बिट की एन्कोडिंग पा सकते हैं। तदनुसार, ये दशमलव, अष्टाधारी, हेक्साडेसिमल और द्विआधारी आधार हैं। उनमें से कुछ आपके लिए अज्ञात हैं, जैसा कि हमने देखा है।

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

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

हम, जिसमें हम रुचि रखते हैं, वह द्विआधारी आधार है। हाँ, क्योंकि बाइनरी 0s और 1s का एक क्रम है, जो तार्किक अवस्थाएँ 0 और 1 हैं। आपको कल्पना करनी होगी कि एक रिसीवर है। बहुत तेजी से न जाने के लिए, हम इस एक पत्र के साथ रहेंगे। इसलिए, हम देखेंगे कि हम धारावाहिक पथ से क्या गुजर रहे हैं। दरअसल, अगर कॉल रिसीव होती है और रुकने के बाद कोई जवाब नहीं देता है, तो बातचीत नहीं हो सकती। अंत में, आपके द्वारा कहने के लिए आवश्यक सब कुछ कहने के बाद, आप "अलविदा" या "हाय!", "अधिक!" के साथ बातचीत समाप्त करते हैं। और इसी तरह। तो एक एंड बिट या स्टॉप बिट होगा जो सीरियल लिंक पर वही काम करेगा।

  • यह प्रारंभिक संदेश आपको वार्तालाप खोलने की अनुमति देता है।
  • यह वह है जो अपने वार्ताकार के साथ बातचीत में संलग्न होगा।
  • बातचीत का मुख्य तत्व।
यह वह जगह है जहाँ धारावाहिक संचार चलन में आता है।

कार्यक्रम

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

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

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

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

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

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

इसलिए, यह जानना महत्वपूर्ण है कि स्थान पर डेटा को पढ़ने में सक्षम होने के लिए कम से कम महत्वपूर्ण बिट कहां है। अन्यथा, हम गलत डेटा का पता लगाते हैं! नकारात्मक वोल्टेज पर ध्यान दें जो तर्क स्थिति 1 और तर्क स्थिति में सकारात्मक वोल्टेज के अनुरूप हैं।

वे प्रति सेकंड बिट्स में व्यक्त किए जाते हैं। जब एक सीरियल लिंक का उपयोग किया जाता है, तो बॉड दर निर्धारित की जाएगी। यह गति कई सीमाओं के अधीन है: दो पक्षों को जोड़ने के लिए उपयोग की जाने वाली केबल की लंबाई और वह गति जिस पर दोनों पक्ष एक-दूसरे को समझ सकते हैं।


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

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

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

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

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

किसी प्रोग्राम को कंप्यूटर से Arduino में स्थानांतरित करने की प्रक्रिया में, कई घटक शामिल होते हैं। यदि उनमें से कम से कम एक सही ढंग से काम नहीं करता है, तो फर्मवेयर प्रक्रिया टूट जाएगी। विशेष रूप से, फर्मवेयर प्रक्रिया इस पर निर्भर करती है: Arduino ड्राइवर, डिवाइस मॉडल और Arduino वातावरण में पोर्ट चयन, बोर्ड से भौतिक कनेक्शन, 8U2 नियंत्रक फर्मवेयर (चालू) Arduino Unoऔर मेगा 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 चिप वाले पुराने Arduinos के लिए)। 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 ड्राइवर उपनिर्देशिका में नहीं)।
  • अगर स्थापना के दौरान Arduino ड्राइवरविंडोज एक्सपी के तहत यूनो या मेगा 2560 आपको निम्न त्रुटि मिलती है: "सिस्टम निर्दिष्ट फ़ाइल नहीं ढूंढ सकता", फिर इस समाधान का प्रयास करें (रजिस्ट्री शाखा "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" में "रनऑन" कुंजी जोड़ने के बारे में" )
  • Linux पर, Arduino Uno और Mega 2560 को /dev/ttyACM0 डिवाइस के रूप में परिभाषित किया गया है, जो Arduino सीरियल वातावरण द्वारा उपयोग किए जाने वाले RXTX लाइब्रेरी के मानक संस्करण द्वारा समर्थित नहीं हैं। इसलिए, इस वातावरण के लिनक्स संस्करण में एक पैचेड 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। यदि "टूल्स> सीरियल पोर्ट" मेनू में कुछ भी दिखाई नहीं देता है, तो बोर्ड को सीधे अपने कंप्यूटर में प्लग करने और Arduino IDE को पुनरारंभ करने का प्रयास करें।
  • फर्मवेयर की अवधि के लिए, सभी उपकरणों को डिजिटल पिन 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 () के लिए हार्डवेयर समर्थन केवल कुछ पिनों पर लागू किया जाता है। इसलिए, किसी भी अन्य नियंत्रक पिन पर एनालॉगवर्इट () फ़ंक्शन को कॉल करने से या तो एक उच्च सिग्नल स्तर (5 वी - 128 से अधिक मूल्यों के लिए) उत्पन्न होगा, या कम स्तर(0 वी - 128 से कम मूल्यों के लिए)। ATmega8 माइक्रोकंट्रोलर के साथ Arduino के पुराने संस्करणों में, PWM समर्थन केवल 9, 10 और 11 पिन पर लागू किया गया है।

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

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

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

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

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

अगली त्रुटि:

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

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