Cómo resetear Arduino Uno por software: Métodos explicados

  • El reset por software en Arduino Uno se puede hacer mediante punteros de función o usando un pin digital.
  • El reset automático ocurre al conectar la placa por USB debido al control de flujo del ATmega8U2.
  • Este reseteo puede desactivarse cortando una pista en la placa Arduino para evitar reinicios no deseados.

cómo reconocer un arduino falsificado-4

Muchas veces, al trabajar con una placa Arduino Uno, es necesario reiniciarla sin intervención física, ya sea porque el dispositivo se encuentra en un lugar de difícil acceso o porque queremos automatizar el proceso dentro del código. Afortunadamente, existen varios métodos para realizar un reset de Arduino Uno por software, cada uno con sus ventajas y aplicaciones específicas.

En este artículo veremos diferentes formas de reiniciar un Arduino Uno a través del código, desde el uso de punteros de función hasta el empleo de pines digitales para generar un reset externo. También exploraremos el funcionamiento del reset automático al conectar por puerto serie y cómo evitarlo si genera problemas en nuestros proyectos.

Resetear Arduino Uno mediante punteros de función

Uno de los métodos más utilizados para reiniciar un Arduino Uno desde el código es el uso de un puntero de función. La idea es asignar la dirección de memoria 0 a un puntero de función y llamarlo para que el procesador ejecute un reinicio del sistema. Puedes aprender más sobre proyectos relacionados en la guía de Arduino Uno.

El código básico para este método es el siguiente:

String letra = "";  
int x = 2;  

void(* resetSoftware)(void) = 0;  

void setup(){  
  Serial.begin(9600);  
  Serial.println("Iniciando.");  
}  

void loop() {  
  if (Serial.available() > 0) {  
    letra = Serial.readString();  
    Serial.println(letra);  
    if(letra.indexOf("v") > -1){  
      x = x + 5;  
      Serial.println(x);  
      Serial.println("Reseteado.");  
      delay(500);  
      resetSoftware();  
    }  
  }  
}  

En este caso, cuando se envía la letra «v» al Monitor Serie, la placa suma 5 a la variable x, imprime el nuevo valor y luego ejecuta el reseteo invocando resetSoftware(). Esto devuelve el microcontrolador a su estado inicial como si se hubiera pulsado el botón de reset. Para otros métodos de programación, puedes consultar la guía sobre el uso de millis en Arduino.

Reset de Arduino Uno usando un pin digital

Otra forma de realizar un reseteo por software es conectando un pin digital al pin de reset de la placa. Esto se logra mediante un simple cable entre un pin de salida (como el 10) y el pin RESET del Arduino. Este método es útil si buscas una solución rápida sin modificar el bootloader.

El código para este método es el siguiente:

String letra = "";  
int x = 2;  

void setup(){  
  digitalWrite(10, HIGH);  
  Serial.begin(9600);  
  Serial.println("Iniciando.");  
  pinMode(10, OUTPUT);  
}  

void loop() {  
  if (Serial.available() > 0) {  
    letra = Serial.readString();  
    Serial.println(letra);  
    if(letra.indexOf("v") > -1){  
      x = x + 5;  
      Serial.println(x);  
      Serial.println("Reseteado.");  
      delay(500);  
      digitalWrite(10, LOW);  
    }  
  }  
}  

En este caso, al enviar la letra «v» por el Monitor Serie, se baja el estado lógico del pin 10, lo que produce un reset en la placa. Es una alternativa práctica cuando se necesita reiniciar el sistema desde el software sin modificar el código del bootloader. Si necesitas más información sobre la conectividad de Arduino, te recomendamos leer sobre Arduino Nano.

Reseteo automático de Arduino al conectarlo por puerto serie

Las placas Arduino Uno tienen un mecanismo de reseteo automático cuando se establece una conexión a través del puerto serie. Esto ocurre porque la línea DTR del chip ATmega8U2 está conectada mediante un condensador de 100 nF a la línea de reset del procesador ATmega328. Al activarse la DTR, se genera un pulso en la línea de reset que provoca el reinicio del Arduino. Esto es una característica útil en muchos proyectos, como los que involucran pantallas OLED, que puedes explorar en la guía sobre pantallas OLED de 0.96″.

Este mecanismo permite que el gestor de arranque tenga un tiempo de espera más corto y facilita la carga de nuevos programas sin necesidad de presionar el botón de reset manualmente. Sin embargo, en algunos casos, esto puede ser un inconveniente si el código depende de una conexión serie constante.

Cómo evitar el reseteo automático al usar USB

Si el reseteo automático al conectar el Arduino a un ordenador causa problemas en el funcionamiento del proyecto, hay una solución sencilla para deshabilitarlo. La placa incluye una pequeña pista que se puede cortar para evitar este comportamiento. Esta modificación se puede realizar fácilmente si conoces las bases de la electrónica, como se explica en la guía sobre controladores de motores paso a paso.

Para hacerlo, basta con localizar la pista en la parte inferior de la placa cerca del conector USB y cortarla con un cutter o un bisturí. Si en el futuro se necesita restaurar la función de reinicio automático, se puede volver a habilitar soldando un pequeño puente entre los dos puntos de la pista.

Conocer cómo deshabilitar el reseteo automático proporciona mayor control sobre el comportamiento del Arduino al recibir datos desde la computadora. Dominar estos métodos para resetear un Arduino Uno brinda mayor flexibilidad en el desarrollo de proyectos electrónicos, permitiendo automatizar, depurar y mejorar el comportamiento de los sistemas embebidos sin la necesidad de intervención manual.

watchdog Arduino
Artículo relacionado:
Watchdog de Arduino: cómo funciona

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.