Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Ne pas utiliser la méthode native à Arduino delay().

  2. Ne pas utiliser de capteurs qui émettent seulement une variable-width pulse, qui s’appelle aussi TTL pulse, comme le Parallax PING et ses semblables, comme le HC-SR04.

  3. Utiliser les méthodes while(), do…while() et for() avec prudence. Si l’exécution du programme est gardée intentionnellement dans une boucle pour une longue durée de temps, assurez vous d’inclure un appel à la méthode CrcLib::Update() à l’intérieur pour que les données utilisées par la CrcLib sont soient rafraîchies assez souvent.

...

Une des manières les plus faciles de lancer la partie “roulante” d’un code un certain moment après que le CrcDuino ait été démarré est d’utiliser un bouton qui fait tomber le code dans une boucle infinie.

Ici, le contact Normalement Ouvert d’un bouton, que nous avons appelé BUTTON_LAUNCH_PROGRAM, a été câblé physiquement pour faire une continuité électrique entre la pin broche SIG du port CRC_PWM_1 et une pin broche GND. Une mise à terre de la pin broche fera tomber l’entrée digitale numérique à LOW comme elle lira 0 Volts. Dès que l’entrée tombe à low LOW, le code entrera dans le condition if(CrcLib::GetDigitalInput(BUTTON_LAUNCH_PROGRAM)==LOW), et tombera immédiatement par la suite dans la boucle while(1==1). Vu que 1 égalera toujours 1, l’exécution du code ne quittera jamais la boucle while(1==1).

...

Code Block
languagecpp
#include <CrcLib.h>

#define BUTTON_LAUNCH_PROGRAM CRC_DIG_1    //Ceci renomme CRC_DIG_1 à BUTTON_LAUNCH_PROGRAM

void setup() {
  
  CrcLib::Initialize();
  CrcLib::SetDigitalPinMode(CRC_DIG_1,INPUT);
  Serial.begin(2000000);

}

void loop() {
  
  CrcLib::Update();    //Appel hors de la boucle
  Serial.println("Out of the loop");
  Serial.println(CrcLib::GetDigitalInput(BUTTON_LAUNCH_PROGRAM));
  
  if (CrcLib::GetDigitalInput(BUTTON_LAUNCH_PROGRAM)==LOW) //Le bouton est appuyéenfoncé
  {
    while(1==1)
    {
      Serial.println("Program executes this loop until board reset or power loss");
      CrcLib::Update();    //Appel dans la boucle
      
      //Insérer le code du robot ici.
      
    }
  }
}

...