//**************************************************************************************************************************
// 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 chronometrer
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
}
}
//************************************************************************************************************************** |