Sorties digitales et exemples avec Arduino. L’Effet K-2000.

L'effet K-2000 avec sept leds et Arduino
L'effet K-2000 avec sept leds et Arduino

Dans cet article nous allons apprendre à programmer l’effet de lumières de l’emblématique K-2000. Pour cela nous allons voir, premièrement, comment allumer et éteindre une led; deuxièmement, comment faire l’effet avec trois led connectées en parallèle; après, on connectera sept lumières, et finalement, nous établirons une jolie trace lumineuse.

Les sorties digitales peuvent acquérir uniquement deux valeurs: LOW (0V) ou HIGH (5V). Par exemple, pour allumer une ampoule led on utilisera les 5V que la sortie digitale de la carte Arduino nous offre.

Pour travailler avec les sorties digitales, comme pour les entrées, on utilisera essentiellement deux fonctions:

  • pinMode (pin digital, OUTPUT): nous sert à configurer le pin indiqué tel que premier paramètre dans la fonction, comme une sortie digitale.
  • digitalWrite (pin de sortie, valeur): valeur est le paramètre LOW ou HIGH que nous voulons assigner au pin digital indiqué comme paramètre de sortie.

Led connectée à une sortie digitale. Allumer et éteindre.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Une plaque d’ essai ou breadboard.
  • Deux fils.
  • Une led.
  • Une résistance de 220 Ohm

Avant tout, vous devez savoir que les lumières led ont une polarité (+/-) et il faut bien les positionner pour qu’elles s’allument sans problèmes. La branche courte est négative et devra se connecter à la masse (GND sur Arduino) á travers la résistance. La branche longue, ou arrondit, est positive et se connectera au pin correspondant sur Arduino.

Led connectée à une sortie digitale.
Diode connectée à une sortie digitale

Le schéma es simple, l’anode (+) se connectera au pin digital 2 de la plaque Arduino. La cathode (-) se reliera à une résistance de 220 Ohm et à la borne GND de la plaque.

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH); // on allume
  delay(1000); // on attend
  digitalWrite(2, LOW); // on éteint
  delay(1000);
}

Le code est aussi très simple: dans la fonction setup, avec l’instruction pinMode(), on indique que le pin digital 2 va agir comme sortie. Après, on allumera et on éteindra la diode avec l’instruction digitalWrite(). D’abord on lui indique que le pin digital 2 a une valeur HIGH (led allumée), puis, passée une seconde, on lui indique que le pin 2 a une valeur LOW (led éteinte). Finalement, elle attend, à nouveau, une seconde… et la boucle (loop ()) recommence.

Ce code peut aussi s’écrire:

byte pinLed = 2;                // le pin digital numéro 2 on l’appelle pinLed
void setup() {
  pinMode(pinLed, OUTPUT);      // on indique comme sortie le pin digital 2
}

void loop() {
  digitalWrite(pinLed, HIGH);   // on allume
  delay(1000);                 // on attend
  digitalWrite(pinLed, LOW);   // on éteint
  delay(1000);
}

La seule différence entre les deux codes, se trouve dans le fait que nous avons nommé une variable du type byte comme pinled au lieu du numéro 2.

Trois leds connectées en parallèle, l’effet k-2000.

Avec ce petit projet on essaiera d’allumer les trois diodes reproduisant l’effet K-2000, mais sans trace lumineuse.

il est nécessaire:

  • Arduino Uno ou équivalent.
  • Une plaque d’essai ou breadboard.
  • Sept fils.
  • Trois leds
  • Une résistance de 220 Ohm.
Trois leds connectées en parallèle, l'effet k-2000 pour Arduino.
Trois diodes connectées en parallèle

Nous avons trois leds connectées aux pins digitaux d’ Arduino numéro 6, 7 et 8; indiquant parmi la fonction setup() que ceux sont des pins de sortie. Puis, la fonction loop(), combinée avec for(), pour lui indiquer si il faut allumer ou éteindre. Pour le retour, il faut seulement coder la led reliée au pin 7.

Voyons le code:

byte i=0;         //  Variable pour compter les boucles for
int time=100;   //  Variable pour compter le temps des delay()

void setup() {    // Initialisons les pins digitaux 6, 7 y 8 comme sorties
  for (i = 6; i<=8 ; i++) {
    pinMode(i, OUTPUT);
  }
}
void loop() {
  //  les LEDs du 6 au 8 clignotent
  for (i = 6; i<=8; i++) {
    digitalWrite(i, HIGH);
    delay(time);
    digitalWrite(i, LOW);
  }

  // le led 7, celui du centre, clignote
  digitalWrite(7, HIGH);
  delay(time);
  digitalWrite(7, LOW);
}

Sept leds connectées en parallèle.

il est nécessaire:

  • Arduino Uno ou équivalent.
  • Une plaque d’essai ou breadboard.
  • Huit fils.
  • Sept leds.
  • Sept résistances de 220 Ohm.

Le schéma de connexions:

Sept leds connectées en parallèle avec Arduino.
Sept diodes connectées en prallèle

Le code:

byte i=0;         //  Variable pour compter les boucles for
int time=100;   //  Variable pour compter le temps des delay()

void setup() {
  // Initialisons les pins digitaux du 5 au 11 comme sorties
  for (i = 5; i<=11 ; i++) {
    pinMode(i, OUTPUT);
  }
}
void loop() {
  // LEDs du 5 au 11 clignotent
  for (i = 5; i<=11; i++) {
    digitalWrite(i, HIGH);
    delay(time);
    digitalWrite(i, LOW);
  }

  // LEDs du 10 au 6 clignotent
  for (i = 10; i>=6; i--) {
        digitalWrite(i, HIGH);
        delay(time);
        digitalWrite(i, LOW);
    }
}

Nous pouvons constater que les boucles for() se répètent du pin 5 jusqu’au 11 et, pour le retour, nous ajoutons une boucle qui reviens du pin 10 au 6.

Trace lumineuse de l’effet K-2000.

Nous- y voilà enfin!

On utilisera le même système de connexions mais le nouveau code est:

byte leds[]={5,6,7,8,9,10,11};  // Tableau listant les pins connectés aux leds
byte i=0;                       // Variable compteur pour les bucles for
int time=30;                  // Variable compteur de temps des delay()
void setup() {
  // Activer les pins digitaux comme sorties
  for (i=0;i<=6;i++) {
    pinMode(leds[i],OUTPUT);
  }
}
void loop() {
  // LEDs, du 5 au 11 clignotent
  for (i=0;i<6;i++) {
    digitalWrite (leds[i],HIGH);
    delay(time);
    digitalWrite(leds[i+1],HIGH);
    delay(time);
    digitalWrite (leds[i],LOW);
    delay(time*2);
  }
  //LEDs, del 10 al 6 clignotent
  for (i=6;i>0;i--) {
    digitalWrite (leds[i],HIGH);
    delay(time);
    digitalWrite(leds[i-1],HIGH);
    delay(time);
    digitalWrite (leds[i],LOW);
    delay(time*2);
  }
}

Ce code présente, par rapport aux autres, quelques différences. On a créé un tableau ou groupement de donnés (array) où nous allons marquer les pins ou brochures qu’on utilisera pour commander les diodes et que après on adoptera dans les boucles for().

Pour créer la trace lumineuse on allumera deux leds (HIGH) et on éteindra un seul (LOW) dans l’instruction for() comprise dans la fonction loop ().

Articles similaires
Laisser un commentaire