Exemple Arduino "Blink without delay" avec trois LEDs (v1)

par skywodd | | Langue : C++ | Licence : GPLv3

Description :

Exemple Arduino "Blink without delay" avec trois LEDs (version 1)

Code source :

Voir le code source brut | Télécharger blinkwithoutdelay_multi.ino | Télécharger blinkwithoutdelay_multi.ino.zip

/*
   Code d'exemple "Blink Without delay" avec trois LEDs.
*/

// Déclare les broches sur lesquelles sont câblées les LEDs
const int BROCHE_LED_1 = 13;
const int BROCHE_LED_2 = 12;
const int BROCHE_LED_3 = 11;

// Nombre de millisecondes entre deux changements d'état des LED
const unsigned long BLINK_INTERVAL_1 = 1000;
const unsigned long BLINK_INTERVAL_2 = 500;
const unsigned long BLINK_INTERVAL_3 = 2000;

// Précédente valeur de millis() pour la LED 1, 2 et 3
unsigned long previousMillisLed1 = 0;
unsigned long previousMillisLed2 = 0;
unsigned long previousMillisLed3 = 0;

// Précédent état de la LED 1, 2 et 3
byte etatBrocheLed1 = LOW;
byte etatBrocheLed2 = LOW;
byte etatBrocheLed3 = LOW;

// Fonction setup(), appelée au démarrage de la carte Arduino
void setup() {

  // Configure les broches des LEDs en sortie
  pinMode(BROCHE_LED_1, OUTPUT);
  pinMode(BROCHE_LED_2, OUTPUT);
  pinMode(BROCHE_LED_3, OUTPUT);
  
  // Configure l'état initial des LEDs
  digitalWrite(BROCHE_LED_1, etatBrocheLed1);
  digitalWrite(BROCHE_LED_2, etatBrocheLed2);
  digitalWrite(BROCHE_LED_3, etatBrocheLed3);
}

// Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée
void loop() {

  // Récupére la valeur actuelle de millis()
  unsigned long currentMillis = millis();
  
  // Si BLINK_INTERVAL_1 ou plus millisecondes se sont écoulés
  if(currentMillis - previousMillisLed1 >= BLINK_INTERVAL_1) {
    
    // Garde en mémoire la valeur actuelle de millis()
    previousMillisLed1 = currentMillis;
    
    // Inverse l'état de la LED 1
    etatBrocheLed1 = !etatBrocheLed1;
    digitalWrite(BROCHE_LED_1, etatBrocheLed1);
  }
  
  // Si BLINK_INTERVAL_2 ou plus millisecondes se sont écoulés
  if(currentMillis - previousMillisLed2 >= BLINK_INTERVAL_2) {
    
    // Garde en mémoire la valeur actuelle de millis()
    previousMillisLed2 = currentMillis;
    
    // Inverse l'état de la LED 2
    etatBrocheLed2 = !etatBrocheLed2;
    digitalWrite(BROCHE_LED_2, etatBrocheLed2);
  }
  
  // Si BLINK_INTERVAL_3 ou plus millisecondes se sont écoulés
  if(currentMillis - previousMillisLed3 >= BLINK_INTERVAL_3) {
    
    // Garde en mémoire la valeur actuelle de millis()
    previousMillisLed3 = currentMillis;
    
    // Inverse l'état de la LED 3
    etatBrocheLed3 = !etatBrocheLed3;
    digitalWrite(BROCHE_LED_3, etatBrocheLed3);
  }
}