Vraag:
Hoe wis ik het geheugen van de Arduino Uno?
Peter Turner
2014-02-27 00:32:43 UTC
view on stackexchange narkive permalink

Ik ben gewoon een knutselaar die Arduino leert met mijn zoon en ik was verrast dat toen ik de USB-kabel weer in de Arduino stak, het programma nog liep en ik dacht bij mezelf: "Het is maar goed dat ik dat niet deed blaas gewoon iets op. "

Dus, hoe noemen mensen het normaal met deze dingen? Laad je meestal de kale botten, niets schetsen of gewoon alles loskoppelen?

Wat bedoel je met "toen ik de USB-kabel weer in de Arduino stak, draaide het programma nog", welk gedrag nam je waar en welk gedrag verwachtte je? Is er iets met de Arduino verbonden?
@jippie Ja, ik had een aantal LED's aangesloten en ze gingen allemaal branden. Om de een of andere reden dacht ik dat de programma's in het geheugen waren geladen en opnieuw zouden worden opgestart, maar aangezien dat niet bestaat ...
De programma's worden in het flash-geheugen geladen, niet in het RAM, dus ze blijven ook na stroomuitval behouden.
Zes antwoorden:
#1
+15
Manishearth
2014-02-27 00:37:12 UTC
view on stackexchange narkive permalink

Bij het opstarten zal de Arduino het programma uitvoeren dat het laatst op de Arduino is gezet. Oplossing: schakel het niet in als u niet wilt dat het wordt uitgevoerd.

Wanneer de Arduino uit de doos komt, voert hij meestal het Blink-programma uit. Dus je kunt dat gewoon laden en het een dag noemen als je het wilt "resetten".

Of maak een loop-programma met een slaapcommando.

Als je hebt geknoeid met de USB-bootloader via de icsp-pinnen, dit is echter niet genoeg, je moet de bootloader opnieuw installeren. Maar als je programma's hebt geüpload via usb of rechtstreeks met een programmeur, is er geen probleem met het uploaden van Blink of een ander dummy-programma om het opnieuw in te stellen.

is het mogelijk om het een zelfdestructief programma te laten uitvoeren zonder dat er iets is aangesloten op de spanningsklemmen?
@PeterTurner als er geen stroom is? Nee. Maar je kunt een programma toevoegen dat misbruik maakt van de pinnen, en als je het aan laat staan ​​kan er schade worden aangeroepen (niet veel tenzij de pinnen zijn aangesloten)
#2
+9
asheeshr
2014-03-02 08:38:25 UTC
view on stackexchange narkive permalink

Als veiligheid een grote zorg is, dan zou je bijna altijd een stop * sketch op het bord moeten laden voordat je het een dag noemt. Dit zou bijvoorbeeld een goed idee zijn wanneer uw bord semi-permanent deel uitmaakt van een groter systeem. Je zou dit kunnen doen door:

  • Upload de Bare Minimum sketch gevonden in File -> Voorbeelden -> Basic kbd > in de
  • Upload een sketch met een grote vertraging in de lus.
  #include <limits.h>void setup () {} void loop () {delay (ULONG_MAX);}  
  void setup () {exit (0);} void loop () {}  

* Stop is gewoon figuurlijk. Het bord stopt niet echt met draaien.

Kunt u een soortgelijk (en meer permanent) effect krijgen door `exit ()` aan te roepen vanuit `setup ()` of `loop ()`?
@PeterR.Bloomfield Kan niet geloven dat ik dat vergeten ben!
Waarom zou u zich druk maken over de uitgang of de vertraging? Gewoon `void setup () {} void loop () {}` - in ieder geval intern is de processor gewoon aan het ronddraaien "niets nuttigs doen".
#3
+2
linhartr22
2017-06-08 22:42:12 UTC
view on stackexchange narkive permalink

Mijn grootste zorg als dit gebeurt, is dat ik de Arduino meestal bedraad voor mijn nieuwe project en ik sluit de USB aan voor de eerste download van de nieuwe schets. Ik maak me zorgen, ik heb geen idee wat het vorige programma gaat proberen, omdat ik verbonden ben met totaal andere hardware.

Tot nu toe is er niets ergs gebeurd en ik denk niet dat ik brandende BLINK zal gebruiken elke keer dat ik stop een van mijn Arduino's terug in de prullenbak. Het is echter waarschijnlijk slechts een kwestie van tijd.

#4
+1
Nick Gammon
2015-08-19 02:59:16 UTC
view on stackexchange narkive permalink

Het belangrijkste dat fout kan gaan, is als je je Arduino een paar weken opzij legt, vergeet welke sketch (code) erop is geladen, er dan weer aan gaat werken, hardware aansluit (zoals een schakelaar, LED of motor) en laat deze onverwachts oplichten / inschakelen, omdat de vorige code zich richtte op de pin waarmee deze was verbonden.


Oplossing 1. Laad eerst de nieuwe code.

Een eenvoudige en veilige techniek is om de nieuwe code te laden waar u vandaag aan werkt voordat u hardware aansluit. Nu weet u wat de code doet, welke pinnen hij gebruikt, en u sluit dan de hardware erna (bij voorkeur eerst de Arduino uitschakelen door de stekker uit het stopcontact te halen).

Wanneer je de stroom weer aansluit, wordt de sketch uitgevoerd die je hebt geüpload, je hebt je hardware aangesloten en alles zou in orde moeten zijn.


Oplossing 2. Laad een "niets doen" sketch.

Je kunt deze korte sketch uploaden:

  int main () {}  

Het "doet niets". Alle pinnen blijven als invoer, dus u kunt veilig uw hardware aansluiten en vervolgens uw nieuwe project coderen.


Veiligheid eerst

Een goede regel is om niet of koppel hardware (bijv. LED's, schakelaars, motoren) los terwijl de stroom is ingeschakeld. Als je afgeleid wordt en de stekker in het verkeerde stopcontact op het bord steekt, kun je onmiddellijk beschadigen wat je hebt aangesloten, of de Arduino, of beide.

Als de stroom is uitgeschakeld, kun je dan nog een last-minute controleer of alles op de juiste plaats is aangesloten, of je polariteiten correct zijn, enzovoort.

Zorg er ook voor dat je geen statische elektriciteit op je lichaam hebt, vooral als je een trui draagt ​​of zo pluizig, of zitten op tapijt.

Persoonlijk reik ik altijd naar een metalen onderdeel in de buurt om mezelf te "aarden", voordat ik naar de Arduino reik. Een voorbeeld is de metalen behuizing van een pc, een hoofdtelefoonaansluiting of iets dergelijks.

Als u na het aansluiten van de stroom op de Arduino (bijv. via de USB-kabel) niet meteen de power-LED ziet branden, koppel dan onmiddellijk de stroom los! Misschien heb je iets kortgesloten, en hoe minder tijd je dat doet, hoe beter.

#5
  0
nipi
2015-08-18 17:41:12 UTC
view on stackexchange narkive permalink

Als het Arduino-bord is aangesloten op een ander apparaat, koppel dan alles los en verbind de Arduino met de computer met behulp van de USB-kabel en probeer een nieuwe schets te uploaden, ik hoop dat het helpt.

Welkom bij Arduino SE! Is er een reden waarom dit antwoord beter is dan de andere verstrekte antwoorden? Bedankt!
#6
  0
Victor Peters
2017-01-11 04:06:09 UTC
view on stackexchange narkive permalink

Ga in de Arduino IDE naar voorbeelden, selecteer Eeprom, selecteer eeprom clear en upload de sketch.

Als dit het geval is, gaat de LED op pin 13 branden, je bent klaar.

NB. Dit kan enige tijd duren, afhankelijk van de grootte van de EEPROM in de Arduino.

Dus wat heeft het voor zin? Iets draaien dat de I / O niet aanraakt (maar de EEPROM wist bij elke keer inschakelen)?
Heb je dit echt geprobeerd? Pin 13 lijkt niet te zijn ingesteld als output (Arduino IDE 1.6.5)


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...