Versions Compared

Key

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

...

Code Block
languagecpp
//**************************************************************************************************************************
// Tutoriel CrcDuino 2 - Reproduire la fonction delay()
//**************************************************************************************************************************
#include <CrcLib.h> // Obligatoire

// C'est pratique d'avoir un nom pour chaque port de contrôle
#define SERVO_STAND_1 CRC_PWM_6
#define BTN_AVANCE CRC_DIG_1

// Déclaration des constantes (qui ont une valeur fixe)
const unsigned long DELAIS_MS = 5000; // durée de contrôle du servo (en millisecondes, donc 5s)

// Déclaration des variables (elle changeront de valeur, mais se "souviennent" de leur valeur)
CrcLib::Timer timer; // Pour chronometrerchronométrer
bool enAttente = false; // Pour se souvenir de si nous sommes en attente

//**************************************************************************************************************************
void setup() {
  // Mettez votre code d'initialisation ici, il s'exécutera une seule fois au début du programme
  CrcLib::Initialize(); // Initialise le CRCduino
  
  CrcLib::InitializePwmOutput(SERVO_STAND_1, 500, 2500); // Configure la sortie du moteur, avec des durées de pulsations explicites, telles que dictées par le manufacturier
  CrcLib::SetDigitalPinMode(BTN_AVANCE, INPUT); // Configure le bouton comme entrée

  Serial.begin(1000000);
}
//**************************************************************************************************************************
void loop() {
  // Mettez ici le code de la boucle principale, qui s'exécutera à l'infini:
  CrcLib::Update(); // Tâches de routine du CRCduino

  if (CrcLib::GetDigitalInput(BTN_AVANCE) == LOW && !enAttente) { // Quand le bouton est appuyé (GND est connecté à l'entrée, donc CrcLib::GetDigitalInput() retourne LOW), et que nous ne sommes pas en attente
    timer.Start(DELAIS_MS); // on démarre le compte à rebours
    CrcLib::SetPwmOutput(SERVO_STAND_1, -64); // on allume le servo
    enAttente = true; // on se souvient que nous sommes en attente
  }

  if(enAttente && timer.IsFinished()) { // Quand le compte à rebours s'achève
    CrcLib::SetPwmOutput(SERVO_STAND_1, 0); // On réinitialise la position du servo
    enAttente = false; // On est prêts à recommencer le tout
  }
}
//**************************************************************************************************************************