circuitos
Dos formas de reiniciar Arduino en el software
Si desea RESTABLECER Arduino desde el principio sin presionar manualmente el botón RESET, hay varias maneras. Aquí hay dos formas, utilizando un cableado / circuito mínimo.
Paso 1: uso de 1 cable conectado al pin RESET

En este ejemplo, el pin 13, conectado al LED interno pin 13 está parpadeando. El pin 12 se conecta al pin RESET mediante un cable.
-Típicamente, esto sería un problema porque cuando se inicia la aplicación, todos los pines se tiran BAJO. Por lo tanto, esto deshabilitaría Arduino de cada ejecución. PERO, el truco es: en la función de configuración (), lo PRIMERO que sucede es que escribimos ALTO en el pin 12, que se llama nuestro pin de reinicio (digitalWrite (resetPin, HIGH), tirando así del pin Arduino RESET HIGH.
int led = 13; // pin 13 como OUTPUT LED pin int resetPin = 12; // la rutina de configuración se ejecuta una vez cuando presiona restablecer: void setup () {digitalWrite (resetPin, HIGH); retraso (200); // inicializa el pin digital como salida. pinMode (led, SALIDA); pinMode (resetPin, OUTPUT); Serial.begin (9600); // inicializar Serial Port Serial.println ("reset"); // imprimir reset para saber que el programa se ha reiniciado y // la función de configuración se ha retrasado (200); } // la rutina de bucle se ejecuta una y otra vez para siempre: void loop () {delay (10); digitalWrite (led, ALTO); // enciende el LED (ALTO es el nivel de voltaje) Serial.println ("encendido"); retraso (1000); // espera un segundo digitalWrite (led, LOW); // apaga el LED haciendo el voltaje BAJO Serial.println ("off"); retraso (1000); // espera un segundo Serial.println ("resetting"); retraso (10); digitalWrite (resetPin, LOW); Serial.println ("esto nunca sucede"); // esto nunca sucede porque Arduino se reinicia}
Paso 2: Usando Just Software

void (* resetFunc) (void) = 0; // declara la función de reinicio en la dirección 0
...
resetFunc (); // restablecer llamada
int led = 13; // la rutina de configuración se ejecuta una vez cuando presionas reset: void setup () {// inicializa el pin digital como salida. pinMode (led, SALIDA); Serial.begin (9600); // inicializa el puerto serie} void (* resetFunc) (void) = 0; // declara la función de reinicio @ dirección 0 // la rutina de bucle se ejecuta una y otra vez para siempre: void loop () {digitalWrite (led, HIGH); // enciende el LED (ALTO es el nivel de voltaje) Serial.println ("encendido"); retraso (1000); // espera un segundo digitalWrite (led, LOW); // apaga el LED haciendo el voltaje BAJO Serial.println ("off"); retraso (1000); // espera un segundo Serial.println ("resetting"); resetFunc (); // demora de reinicio de llamada (100); Serial.println ("nunca sucede"); }