मैं Arduino Uno की मेमोरी को कैसे मिटाऊँ?


15

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

तो, इन चीजों के साथ लोग एक दिन सामान्य तरीके से क्या कहते हैं? क्या आप आमतौर पर नंगे-हड्डियों को लोड करते हैं, कुछ भी नहीं करते हैं या बस सब कुछ अनप्लग नहीं करते हैं?


4
"जब मैंने Arduino में प्रोग्राम को अभी भी चला रहा था, तब USB कॉर्ड को वापस प्लग किया" से आपका क्या मतलब है, आपने किस व्यवहार का अवलोकन किया और आपको किस व्यवहार की अपेक्षा थी? क्या कुछ भी Arduino से जुड़ा था?
jippie

@ जिप्पी हां, मेरे पास एलईडी के प्लग का एक गुच्छा था और वे सभी जल गए। किसी कारण से मुझे लगा कि कार्यक्रम मेमोरी में लोड किए गए हैं और रिबूट पर चले जाएंगे, लेकिन चूंकि यह मौजूद नहीं है ....
पीटर टर्नर

7
कार्यक्रमों को फ्लैश मेमोरी में लोड किया जाता है, रैम नहीं, इसलिए उन्हें पावरडाउन के बाद भी रखा जाता है।
रिकार्डो

जवाबों:


15

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

बॉक्स से बाहर होने पर, Arduino आमतौर पर ब्लिंक प्रोग्राम चलाता है। तो आप बस इसे लोड कर सकते हैं और इसे एक दिन कॉल कर सकते हैं यदि आप इसे "रीसेट" करना चाहते हैं।

या एक नींद कार्यक्रम के साथ एक लूप प्रोग्राम है।

यदि आप icsp पिन के माध्यम से USB बूटलोडर के साथ गड़बड़ कर रहे हैं, तो यह पर्याप्त नहीं है, फिर भी आपको बूटलोडर को फिर से स्थापित करना होगा। लेकिन अगर आप USB के माध्यम से या सीधे प्रोग्रामर का उपयोग करके प्रोग्राम अपलोड कर रहे हैं, तो इसे रिसेट करने के लिए ब्लिंक या किसी अन्य डमी प्रोग्राम को अपलोड करने के साथ कोई समस्या नहीं है।


यह वोल्टेज टर्मिनलों के लिए खामियों को दूर करने के साथ एक आत्म-विनाशकारी कार्यक्रम चलाने के लिए संभव है?
पीटर टर्नर

@PeterTurner जब इसके लिए कोई शक्ति नहीं है? नहीं, लेकिन आप एक प्रोग्राम जोड़ सकते हैं जो पिनों का दुरुपयोग करता है, और यदि आप इसे कुछ नुकसान पर छोड़ देते हैं, तो इसे कॉल किया जा सकता है (बहुत ज्यादा नहीं जब तक कि पिंस कनेक्ट नहीं होते हैं)
Manishearth

9

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

  • में File-> Examples- -> Basicमें पाए जाने वाले नंगे न्यूनतम स्केच अपलोड करें
  • लूप में एक बड़ी देरी के साथ एक स्केच अपलोड करें।
#include <limits.h>

void setup()
{}

void loop()
{
  delay(ULONG_MAX);
}
void setup()
{
   exit(0);
}

void loop()
{}

* स्टॉप बस आलंकारिक है। बोर्ड वास्तव में चलना बंद नहीं करता है।


2
आप एक ऐसी ही (और अधिक स्थायी) प्रभाव को फोन करके मिल सकती है exit()के भीतर से setup()या loop()?
पीटर ब्लूमफील्ड

@ PeterR.Bloomfield विश्वास नहीं कर सकता कि मैं इसके बारे में भूल गया!
आश्रिष

बाहर निकलने या देरी से परेशान क्यों? बस है void setup () { } void loop () { }- किसी भी मामले में आंतरिक रूप से प्रोसेसर बस "कुछ भी उपयोगी नहीं है" के आसपास लूपिंग है।
निक गैमन

1

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


समाधान 1. पहले नया कोड लोड करें।

एक सरल और सुरक्षित तकनीक उस नए कोड को लोड करना है जिसे आप किसी हार्डवेयर को प्लग इन करने से पहले आज के समय पर काम कर रहे हैं । अब आप जानते हैं कि कोड क्या करता है, यह किस पिन का उपयोग करता है, और आप बाद में हार्डवेयर को प्लग करते हैं (अधिमानतः Arduino को मोड़कर। पहले इसे बंद करके)।

फिर जब आप पावर को फिर से कनेक्ट करते हैं, तो यह आपके द्वारा अपलोड किए गए स्केच को चलाता है, आपके पास आपका हार्डवेयर जुड़ा हुआ है और सब कुछ ठीक होना चाहिए।


समाधान 2. एक "कुछ भी नहीं" स्केच लोड करें।

आप इस छोटे स्केच को अपलोड कर सकते हैं:

int main () { }

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


सुरक्षा पहले

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

बिजली बंद होने के बाद, आप अंतिम मिनट की जांच कर सकते हैं कि सब कुछ सही जगह से जुड़ा हुआ है, आपके पास अपनी ध्रुवताएं सही हैं, और इसी तरह।

यह भी सुनिश्चित करें कि आपके शरीर पर स्थैतिक बिजली नहीं है, खासकर यदि आप जम्पर या कुछ शराबी पहने हुए हैं, या कालीन पर बैठे हैं।

व्यक्तिगत रूप से मैं हमेशा Arduino के लिए पहुंचने से पहले, अपने आप को "ग्राउंड" के पास के कुछ धातु के हिस्से को छूता हूं। एक उदाहरण एक पीसी का धातु का मामला है, एक हेडफोन सॉकेट है, या ऐसा कुछ है।

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


1

ऐसा होने पर मेरी सबसे बड़ी चिंता यह है कि मैंने आमतौर पर अपने नए प्रोजेक्ट के लिए Arduino को तार-तार कर दिया है और नए स्केच के शुरुआती डाउनलोड के लिए USB में प्लग कर रहा हूं। मुझे चिंता है, कोई विचार नहीं है कि पिछला कार्यक्रम क्या करने की कोशिश कर रहा है, पूरी तरह से अलग हार्डवेयर से जुड़ा हुआ है।

अब तक कुछ भी बुरा नहीं हुआ है और मुझे नहीं लगता कि मैं हर बार जब मैं अपने एक Arduinos को वापस बिन में रखता हूं तो मैं ब्लिंक जलाने को अपनाऊंगा। यह शायद समय की बात है, हालांकि।


0

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


Arduino SE में आपका स्वागत है! क्या कोई कारण है कि यह उत्तर अन्य प्रदान किए गए उत्तरों से बेहतर है? धन्यवाद!
बेनामी पेंग्विन

0

Arduino IDE में, उदाहरणों पर जाएं, Eeprom का चयन करें, eeprom स्पष्ट का चयन करें और फिर स्केच अपलोड करें।

जब यह पिन पर एलईडी है 13 चालू हो जाएगा, तो आप कर रहे हैं।

एनबी। यह Arduino में EEPROM के आकार के आधार पर कुछ समय ले सकता है।


तो फिर विषय बिंदु क्या है? कुछ ऐसा चल रहा है जो I / O को स्पर्श नहीं करता (लेकिन EEPROM को हर शक्ति पर साफ़ करता है)?
पीटर मोर्टेंसन

क्या आपने वास्तव में यह कोशिश की है? पिन 13 आउटपुट के रूप में स्थापित नहीं हुआ (Arduino IDE 1.6.5)
पीटर मोर्टेंसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.