Wie lösche ich die Erinnerung an den Arduino Uno?

15

Ich bin nur ein Bastler, der mit meinem Sohn Arduino lernt, und ich war überrascht, dass das Programm noch lief, als ich das USB-Kabel wieder in den Arduino steckte, und dachte mir: "Es ist eine gute Sache, dass ich nicht einfach irgendetwas durchgebrannt habe oben."

Also, wie nennen es die Leute normalerweise einen Tag mit diesen Dingen? Laden Sie in der Regel die Bare-Bones-Skizze oder ziehen Sie einfach alles ab?

Peter Turner
quelle
4
Was meinen Sie mit "als ich das USB-Kabel wieder in den Arduino steckte, lief das Programm noch", welches Verhalten haben Sie beobachtet und welches Verhalten haben Sie erwartet? War etwas mit dem Arduino verbunden?
Hippie
@jippie Ja, ich hatte ein paar LEDs angeschlossen und alle leuchteten auf. Aus irgendeinem Grund dachte ich, die Programme würden in den Speicher geladen und würden beim Neustart weg sein, aber da das nicht existiert ...
Peter Turner
7
Die Programme werden in den Flash-Speicher und nicht in den RAM geladen, sodass sie auch nach dem Ausschalten erhalten bleiben.
Ricardo

Antworten:

15

Beim Booten führt der Arduino das Programm aus, mit dem er zuletzt gestartet wurde. Lösung: Schalten Sie es nicht ein, wenn Sie nicht möchten, dass es ausgeführt wird.

Im Auslieferungszustand führt der Arduino normalerweise das Blink-Programm aus. Sie können das also einfach laden und an einem Tag aufrufen, wenn Sie es "zurücksetzen" möchten.

Oder haben Sie ein Schleifenprogramm mit einem Schlafbefehl.

Wenn Sie mit dem USB-Bootloader über die ICSP-Pins in Konflikt geraten sind, reicht dies jedoch nicht aus. Sie müssen den Bootloader neu installieren. Aber wenn Sie Programme über USB oder direkt mit einem Programmierer hochgeladen haben, gibt es kein Problem damit, Blink oder ein anderes Dummy-Programm hochzuladen, um es zurückzusetzen.

Manishearth
quelle
Ist es möglich, ein selbstzerstörendes Programm auszuführen, bei dem an den Spannungsanschlüssen nichts angeschlossen ist?
Peter Turner
@ PeterTurner, wenn es keinen Strom gibt? Nein. Sie können jedoch ein Programm hinzufügen, das die Stifte missbraucht, und wenn Sie es auf etwas Schaden belassen, können Sie (nicht viel, wenn die Stifte nicht verbunden sind)
Manishearth
9

Wenn Sicherheit ein wichtiges Anliegen ist, sollten Sie fast immer eine Stopp * -Skizze auf die Tafel laden, bevor Sie sie an einem Tag aufrufen. Dies ist beispielsweise eine gute Idee, wenn Ihr Board teilweise permanent Teil eines größeren Systems ist. Sie könnten dies tun, indem Sie:

  • Laden Sie die Bare-Minimum-Skizze sich in File-> Examples-> Basicim
  • Laden Sie eine Skizze mit einer großen Verzögerung in der Schleife hoch.
#include <limits.h>

void setup()
{}

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

void loop()
{}

* Stop ist nur im übertragenen Sinne. Das Board hört nicht wirklich auf zu laufen.

Ascheshr
quelle
2
Könnten Sie einen ähnlichen (und dauerhafteren) Effekt erzielen, wenn Sie exit()von innen setup()oder von außen anrufen loop()?
Peter Bloomfield
@ PeterR.Bloomfield Kann nicht glauben, dass ich das vergessen habe!
Asheeshr
Warum sich entweder um die Ausfahrt oder um die Verspätung kümmern? Just have void setup () { } void loop () { }- auf jeden Fall dreht sich der Prozessor intern nur um "Nichtstun".
Nick Gammon
1

Die Hauptsache, die schief gehen kann, ist, wenn Sie Ihr Arduino für ein paar Wochen beiseite legen, vergessen, welche Skizze (Code) darauf geladen ist, und dann wieder daran arbeiten, Hardware (wie einen Schalter, eine LED oder einen Motor) anschließen ) und lassen Sie es unerwartet aufleuchten / einschalten, da der vorherige Code den Pin ansprach, mit dem es verbunden war.


Lösung 1. Laden Sie zuerst den neuen Code.

Eine einfache und sichere Methode besteht darin, den neuen Code, an dem Sie heute arbeiten, zu laden, bevor Sie Hardware anschließen. Jetzt wissen Sie, was der Code tut, welche Pins er verwendet, und schließen die Hardware anschließend an (vorzugsweise drehen Sie den Arduino) ausschalten, indem Sie den Netzstecker ziehen).

Wenn Sie dann die Stromversorgung wieder herstellen, wird die von Ihnen hochgeladene Skizze ausgeführt, Ihre Hardware ist angeschlossen und alles sollte in Ordnung sein.


Lösung 2. Laden Sie eine "Nichtstun" -Skizze.

Sie können diese kurze Skizze hochladen:

int main () { }

Es "tut nichts". Alle Pins bleiben als Eingänge, sodass Sie Ihre Hardware sicher anschließen und dann mit der Codierung Ihres neuen Projekts beginnen können.


Sicherheit zuerst

Eine gute Regel ist, Hardware (z. B. LEDs, Schalter, Motoren) bei angelegter Spannung nicht zu stecken oder zu trennen. Wenn Sie abgelenkt werden und den Stecker in die falsche Buchse auf der Platine stecken, können Sie sofort beschädigen, was Sie angeschlossen haben, oder den Arduino oder beides.

Nach dem Ausschalten können Sie in letzter Minute überprüfen, ob alles an der richtigen Stelle angeschlossen ist, ob die Polarität stimmt und so weiter.

Stellen Sie außerdem sicher, dass Ihr Körper keine statische Elektrizität aufweist, insbesondere wenn Sie einen Pullover oder etwas Flauschiges tragen oder auf einem Teppich sitzen.

Persönlich greife ich immer zu einem Metallteil in der Nähe, um mich zu "erden", bevor ich nach dem Arduino greife. Ein Beispiel ist das Metallgehäuse eines PCs, eine Kopfhörerbuchse oder ähnliches.

Wenn Sie nach dem Anschließen der Stromversorgung an den Arduino (z. B. über das USB-Kabel) nicht sofort die Power-LED sehen, trennen Sie die Stromversorgung sofort! Möglicherweise haben Sie etwas kurzgeschlossen, und je weniger Zeit Sie dafür verwenden, desto besser.

Nick Gammon
quelle
1

Meine größte Sorge dabei ist, dass ich normalerweise das Arduino für mein neues Projekt verdrahtet habe und den USB-Anschluss für den ersten Download der neuen Skizze anschließe. Ich mache mir Sorgen, weil ich keine Ahnung habe, was das vorherige Programm versuchen wird, weil ich mit einer völlig anderen Hardware verbunden bin.

Bisher ist nichts Schlimmes passiert und ich glaube nicht, dass ich jedes Mal, wenn ich einen meiner Arduinos zurück in den Mülleimer lege, das Brennen von BLINK übernehmen werde. Es ist wahrscheinlich nur eine Frage der Zeit.

linhartr22
quelle
0

Wenn das Arduino-Board mit einem anderen Gerät verbunden ist, ziehen Sie den Stecker heraus und verbinden Sie das Arduino mit dem Computer über das USB-Kabel und versuchen Sie, eine neue Skizze hochzuladen. Ich hoffe, es wird helfen.

Nipi
quelle
Willkommen bei Arduino SE! Gibt es einen Grund, warum diese Antwort besser ist als die anderen Antworten? Vielen Dank!
Anonymous Penguin
0

Gehen Sie in der Arduino IDE zu Beispielen, wählen Sie Eeprom, wählen Sie eeprom clear und laden Sie dann die Skizze hoch.

Wenn die LED an Pin 13 aufleuchtet, sind Sie fertig.

NB. Dies kann einige Zeit in Anspruch nehmen, abhängig von der Größe des EEPROM im Arduino.

Victor Peters
quelle
Worum geht es also? Wird etwas ausgeführt, das die E / A nicht berührt (aber das EEPROM bei jedem Einschalten löscht)?
Peter Mortensen
Hast du das schon probiert? Pin 13 scheint nicht als Ausgang eingerichtet zu sein (Arduino IDE 1.6.5)
Peter Mortensen