Comment faire Reset Arduino par logiciel

Pour réinitialisation l’Arduino sans appuyer sur le bouton Reset, il y a trois options – nous les couvrirons toutes dans cet aperçu. Vous devez redémarrer l’Arduino lorsque le microcontrôleur se bloque ou lorsque vous utilisez le module radio nRF24L01, par exemple, lorsque l’émetteur-récepteur perd la communication et cesse de fonctionner. Le redémarrage des émetteurs radio est difficile, mais le redémarrage de la carte Arduino ne pose aucun problème.


Pour cette activité, nous aurons besoin:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • resistance de 1 Kohm
  • breadboard
  • fils de connexion

Matériel supplémentaire sur ce sujet:

  1. Interruptions externes et matérielles Arduino
  2. Fonction millis Arduino: syntaxe, exemple
  3. Mémoire non-volatile EEPROM de Arduino
Comment utiliser la broche RESET Arduino
Comment utiliser la broche RESET de la carte Arduino

Une réinitialisation matérielle ramène tous les paramètres de la carte à leurs valeurs par défaut, c’est-à-dire que toutes les variables sont réinitialisées à leurs valeurs d’origine et que tous les ports actifs sont désactivés et réinstallés. hard reset est une véritable réinitialisation qui a lieu en appuyant sur le bouton RESET. Mais cette réinitialisation peut aussi être appelée depuis le code en appliquant un signal bas au port Reset de l’Arduino.

Comment faire un Reset d’Arduino matériel

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

Explication du code pour hard reset Arduino command reboot:

  1. il est important de définir un niveau de signal élevé sur la broche 12 au début du programme, sinon une réinitialisation se produira;
  2. dans l’exemple l’Arduino se réinitialise matériel toutes les 10 secondes.

Comment faire un Reset d’Arduino logiciel

soft reset n’est pas vraiment une véritable réinitialisation du programme, mais simplement un saut au début du code (à l’adresse zéro). C’est-à-dire que le code commence à s’exécuter depuis le début, sans affecter les paramètres de l’Arduino au moment de la réinitialisation. Par exemple, si au moment de la réinitialisation, le microcontrôleur était réglé sur « HIGH » sur une sortie, la valeur ne reviendra pas par défaut sur « LOW », mais restera « HIGH ».

Comment programmer un soft reset Arduino

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

Explication du code pour logiciel reset Arduino (reboot):

  1. asm volatile(« jmp 0x00 »); relance le programme depuis le début mais ne réinitialise pas les ports, la commande peut être utilisée n’importe où dans le code;
  2. dans l’exemple, le microcontrôleur se réinitialise toutes les 10 secondes.

Pour utiliser Watchdog Timer, le fichier avr/wdt.h doit être inclus et ensuite wdt_enable() doit être appelé. Le chien de garde est une minuterie intégrée (jusqu’à 8 secondes) qui peut être lancée ou réinitialisée. Dès que la minuterie atteint zéro, le contrôleur émet un signal de réinitialisation et l’appareil se remet à zéro. Si programme Arduino prends trop de temps d’exécution alors le chien de garde (Watchdog) entrera en action et fera un « reset » Arduino.

Programme pour reset Arduino lorsqu’il se bloque

#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);
  /* vous pouvez choisir entre plusieurs valeurs prédéfinies
  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();
  if (millis() - timer > 10000) {
    Serial.println("reboot");
    delay(1000);
  }
}

Explication du code pour Watchdog (how to reset arduino):

  1. pour éviter de réinitialiser le microcontrôleur, enlevez le commentaire de wdt_reset(); alors le compteur redémarrera – sinon l’Arduino redémarrera toutes les 4 secondes.

Conclusion. Nous avons vu comment réinitialiser la carte Arduino Uno de manière programmatique en utilisant trois exemples. N’oubliez pas que vous devez être prudent lorsque vous utilisez la réinitialisation matérielle et définir les valeurs correctes avant de réinitialiser le microcontrôleur. Si vous avez besoin d’une véritable réinitialisation du microcontrôleur, utilisez une réinitialisation matérielle de l’Arduino (hard reset).





2 Replies to “Comment faire Reset Arduino par logiciel / matériel”

  1. Bonjour !
    Super tuto, grâce à lui j’ai enfin compris le reset logiciel Arduino
    Merci ! Continuez comme cela !
    @+

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.