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

1. electrónicamente, usando solo 1 cable que conecta un pin OUTPUT (12 en este ejemplo) al pin RESET. (ver el circuito)

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

En este ejemplo, no necesita ningún cableado adicional. Inicializamos la función de reinicio, luego llamamos a reinicio.

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"); } 

Artículos Relacionados