CONTENIDO ►
Para reiniciar el Arduino sin pulsar el botón Reset, hay tres opciones – todas las cuales vamos a cubrir en este resumen. Es necesario reiniciar el Arduino Nano cuando el microcontrolador se cuelga o cuando funciona el módulo de radio nRF24L01, por ejemplo, cuando el transceptor pierde la comunicación y deja de funcionar. Reiniciar los transmisores de radio es difícil, pero reiniciar el Arduino Mega no es ningún problema.
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano / Arduino Mega
- protoboard
- cables de conexion
Arduino resetear el código mediante programa
Un reinicio suave no es realmente un reinicio real del programa, sino simplemente un salto al principio del código (a la dirección cero). Es decir, el código comienza a ejecutarse desde el principio, sin afectar a la configuración de Arduino en el momento del reinicio suave. Por ejemplo, si en el momento del reinicio el microcontrolador estaba en «HIGH» en alguna salida, el valor no volverá por defecto a «LOW», sino que permanecerá en «HIGH».
Como resetear Arduino Uno por software (softreset)
unsigned long timer; void setup() { Serial.begin(9600); delay(100); Serial.println("start"); timer = millis(); } void loop() { if (millis() - timer > 10000) { Serial.println("reboot"); delay(100); asm volatile("jmp 0x00"); } }
Explicación sketch para soft reset Arduino por software:
- asm volatile(«jmp 0x00»); reinicia el programa desde el principio pero no reinicia los puertos, el comando puede ser usado en cualquier parte del código;
- en nuestro ejemplo, se produce un reinicio del programa cada 10 segundos.
Como reiniciar Arduino por software (Watchdog)
¿Cómo hacer un reset por software en Arduino? Para utilizar el Watchdog (Perro Guardian), se debe incluir el fichero avr/wdt.h y luego llamar a wdt_enable() en sketch. El Perro Guardian es un temporizador incorporado (hasta 8 segundos) que puede iniciarse o reiniciarse mediante programación. Tan pronto como el temporizador llega a cero, el controlador da una señal de reinicio y el Arduino Mega / Nano entra en un reinicio duro.
#include "avr/wdt.h" unsigned long timer; void setup() { wdt_disable(); Serial.begin(9600); delay(100); Serial.println("start"); timer = millis(); wdt_enable(WDTO_4S); // el temporizador debe reiniciarse cada 4 segundos /* posibles valores de la constante 15mS WDTO_15MS 30mS WDTO_30MS 60mS WDTO_60MS 120mS WDTO_120MS 250mS WDTO_250MS 500mS WDTO_500MS 1S WDTO_1S 2S WDTO_2S 4S WDTO_4S 8S WDTO_8S */ } void loop() { // wdt_reset(); // para que no haya reinicio, elimine el comentario if (millis() - timer > 10000) { Serial.println("reboot"); delay(1000); } }
Explicación sketch para Watchdog función reset Arduino:
- para evitar el reinicio del microcontrolador, eliminar el comentario de la wdt_reset(); comando, entonces el contador se reiniciará – de lo contrario el Arduino se reiniciará cada 4 segundos.
Reinicio del hardware de Arduino Nano (hard reset)

Un restablecimiento del hardware devuelve todos los ajustes de la placa a sus valores predeterminados, es decir, todas las variables se restablecen a sus valores originales y todos los puertos se desactivan y se vuelven a instalar. En otras palabras, un hard reset es un reinicio real que tiene lugar cuando se pulsa el botón RESET. Pero este reset también se puede llamar desde el código aplicando una señal baja al puerto Reset del Arduino.
unsigned long timer; void setup() { digitalWrite(12, HIGH); pinMode(12, OUTPUT); Serial.begin(9600); delay(100); Serial.println("start"); timer = millis(); } void loop() { if (millis() - timer > 10000) { Serial.println("reboot"); delay(100); digitalWrite(12, LOW); } }
Explicación sketch para hard reset Arduino por software:
- es importante establecer un nivel de señal alto en el pin 12 al inicio del programa, de lo contrario se producirá un reset;
- en el ejemplo el Arduino se reinicia cada 10 segundos.
Conclusión. Hemos visto cómo reiniciar el Arduino a nivel de software utilizando tres ejemplos. Recuerde que debe tener cuidado al utilizar el restablecimiento por hardware y establecer los valores correctos antes de restablecer el microcontrolador. Si necesitas un reinicio real del microcontrolador, utiliza un reinicio por hardware del Arduino (hard reset).

Deja una respuesta