Moltes vegades, en treballar amb una placa Arduino Uno, cal reiniciar-la sense intervenció física, ja sigui perquè el dispositiu es troba en un lloc de difícil accés o perquè volem automatitzar el procés dins del codi. Afortunadament, hi ha diversos mètodes per realitzar un reset de Arduino Uno per programari, cadascun amb els seus avantatges i aplicacions específiques.
En aquest article veurem diferents maneres de reiniciar un Arduino Uno a través del codi, des de l'ús de punters de funció fins a l'ús de pins digitals per generar un reset extern. També explorarem el funcionament del reset automàtic en connectar per port sèrie i com evitar-ho si genera problemes als nostres projectes.
Reiniciar Arduino Uno mitjançant punters de funció
Un dels mètodes més utilitzats per reiniciar un Arduino Uno des del codi és l'ús d'un punter de funció.La idea és assignar la direcció de memòria 0 a un punter de funció i trucar-lo perquè el processador executi un reinici del sistema Pots aprendre més sobre projectes relacionats a la guia de Arduino Uno.
El codi bàsic per a aquest mètode és el següent:
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 aquest cas, quan la lletra «v» s'envia al Monitor Sèrie, la placa suma 5 a la variable x, imprimeix el nou valor i després executa el reset invocant resetSoftware(). Això torna el microcontrolador al seu estat inicial com si s'hagués premut el botó de reset. Per a altres mètodes de programació, podeu consultar la guia sobre l'ús de millis a Arduino.
Reset de Arduino Uno usant un pin digital
Una altra forma de realitzar un reset per programari és connectant un pin digital al pin de reset de la placa. Això s'aconsegueix mitjançant un simple cable entre un pin de sortida (com el 10) i el pin RESET de l'Arduino. Aquest mètode és útil si busques una solució ràpida sense modificar el bootloader.
El codi per a aquest mètode és el següent:
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 aquest cas, en enviar la lletra «v» pel Monitor Serie, es baixa l'estat lògic del pin 10, cosa que produeix un reset a la placa. És una alternativa pràctica quan cal reiniciar el sistema des del programari sense modificar el codi del bootloader. Si necessiteu més informació sobre la connectivitat d'Arduino, us recomanem llegir sobre Arduino Nano.
Reseteig automàtic d'Arduino en connectar-lo per port sèrie
les plaques Arduino Uno tenen un mecanisme de reset automàtic quan s'estableix una connexió a través del port sèrie. Això passa perquè la línia DTR del xip ATmega8U2 està connectada mitjançant un condensador de 100 nF a la línia de reset del processador ATmega328. En activar-se la DTR, es genera un pols a la línia de reset que provoca el reinici de l'Arduino. Això és una característica útil en molts projectes, com els que involucren pantalles OLED, que pots explorar a la guia sobre pantalles OLED de 0.96″.
Aquest mecanisme permet que el carregador d'arrencada tingui un temps despera més curt i facilita la càrrega de nous programes sense necessitat de pressionar el botó de reset manualment, però, en alguns casos, això pot ser un inconvenient si el codi depèn duna connexió sèrie constant.
Com evitar el reset automàtic en utilitzar USB
Si el reset automàtic en connectar l'Arduino a un ordinador causa problemes en el funcionament del projecte, hi ha una solució senzilla per deshabilitar-lo. petita pista que es pot tallar per evitar aquest comportament. Aquesta modificació es pot fer fàcilment si coneixes les bases de l'electrònica, com s'explica a la guia sobre controladors de motors pas a pas.
Per fer-ho, només cal localitzar la pista a la part inferior de la placa prop del connector USB i tallar-la amb un cúter o un bisturí. Si en el futur cal restaurar la funció de reinici automàtic, es pot tornar a habilitar soldant un petit pont entre els dos punts de la pista.
Conèixer com deshabilitar el reset automàtic proporciona més control sobre el comportament de l'Arduino en rebre dades des de l'ordinador. Dominar aquests mètodes per resetejar un Arduino Uno ofereix més flexibilitat en el desenvolupament de projectes electrònics, permetent automatitzar, depurar i millorar el comportament dels sistemes encastats sense la necessitat d'intervenció manual.