Zwei Möglichkeiten, Arduino in der Software zurückzusetzen

Wenn Sie Arduino von Anfang an zurücksetzen möchten, ohne die RESET-Taste manuell zu drücken, gibt es verschiedene Möglichkeiten. Hier sind zwei Möglichkeiten mit minimaler Verkabelung / Schaltung.

Schritt 1: Verwenden von 1 Draht, der an den RESET-Pin angeschlossen ist

1. elektronisch mit nur 1 Draht, der einen OUTPUT-Pin (in diesem Beispiel 12) mit dem RESET-Pin verbindet. (siehe die Schaltung)

In diesem Beispiel blinkt Pin 13, der mit der internen LED Pin 13 verbunden ist. Pin 12 wird über einen Draht mit dem RESET-Pin verbunden.
-Typischerweise ist dies ein Problem, da beim Start der Anwendung alle Pins auf LOW gezogen werden. Dies würde Arduino daher bei jedem Lauf deaktivieren. ABER der Trick ist: In der Funktion setup () schreiben wir als Erstes HIGH auf den Pin 12, der als Reset-Pin (digitalWrite (resetPin, HIGH) bezeichnet wird, und ziehen dabei den Arduino RESET-Pin HIGH.
 int led = 13; // Pin 13 als OUTPUT-LED Pin int resetPin = 12; // Die Setup-Routine wird einmal ausgeführt, wenn Sie auf Zurücksetzen drücken: void setup () {digitalWrite (resetPin, HIGH); Verzögerung (200); // Initialisiere den digitalen Pin als Ausgang. PinMode (LED, OUTPUT); pinMode (resetPin, OUTPUT); Serial.begin (9600); // Serial Port initialisieren Serial.println ("reset"); // Reset drucken, um zu wissen, dass das Programm zurückgesetzt wurde und // die Setup-Funktion verzögert wurde (200); } // Die Schleifenroutine läuft für immer und immer wieder: void loop () {delay (10); digitalWrite (LED, HIGH); // LED einschalten (HIGH ist der Spannungspegel) Serial.println ("on"); Verzögerung (1000); // warte auf ein zweites digitalWrite (led, LOW); // Schalten Sie die LED aus, indem Sie die Spannung auf LOW stellen. Serial.println ("off"); Verzögerung (1000); // warte auf eine zweite Serial.println ("Zurücksetzen"); Verzögerung (10); digitalWrite (resetPin, LOW); Serial.println ("das passiert nie"); // das passiert nie, weil Arduino zurückgesetzt wird} 

Schritt 2: Nur Software verwenden

In diesem Beispiel benötigen Sie keine zusätzliche Verkabelung. Wir initialisieren die Reset-Funktion und rufen dann Reset auf.

void (* resetFunc) (void) = 0; // Rücksetzfunktion an Adresse 0 deklarieren
...
resetFunc (); // Reset aufrufen
 int led = 13; // Die Setup-Routine wird einmal ausgeführt, wenn Sie auf Reset drücken: void setup () {// Initialisieren Sie den digitalen Pin als Ausgang. PinMode (LED, OUTPUT); Serial.begin (9600); // initialisiere die serielle Schnittstelle} void (* resetFunc) (void) = 0; // Reset-Funktion @ Adresse 0 deklarieren // Die Schleifenroutine wird immer wieder ausgeführt: void loop () {digitalWrite (led, HIGH); // LED einschalten (HIGH ist der Spannungspegel) Serial.println ("on"); Verzögerung (1000); // warte auf ein zweites digitalWrite (led, LOW); // Schalten Sie die LED aus, indem Sie die Spannung auf LOW stellen. Serial.println ("off"); Verzögerung (1000); // warte auf eine zweite Serial.println ("Zurücksetzen"); resetFunc (); // Rücksetzverzögerung aufrufen (100); Serial.println ("passiert nie"); }} 

Ähnlicher Artikel