Arduino - Graphique à barres LED

Cet exemple vous montre comment lire une entrée analogique sur la broche analogique 0, convertir les valeurs de analogRead () en tension et l'imprimer sur le moniteur série du logiciel Arduino (IDE).

Composants requis

Vous aurez besoin des composants suivants -

  • 1 × planche à pain
  • 1 × Arduino Uno R3
  • Résistance variable 1 × 5k ohms (potentiomètre)
  • 2 × cavalier
  • 8 × LED ou vous pouvez utiliser (affichage du graphique à barres LED comme indiqué dans l'image ci-dessous)

Procédure

Suivez le schéma de circuit et connectez les composants sur la carte d'expérimentation comme indiqué dans l'image ci-dessous.

Esquisser

Ouvrez le logiciel Arduino IDE sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez un nouveau fichier d'esquisse en cliquant sur Nouveau.

Graphique à barres LED à 10 segments

Ces LED de graphique à barres à 10 segments ont de nombreuses utilisations. Avec une empreinte compacte, un branchement simple, ils sont faciles pour les prototypes ou les produits finis. Essentiellement, ce sont 10 LED bleues individuelles logées ensemble, chacune avec une anode et une connexion cathodique individuelles.

Ils sont également disponibles en jaune, rouge et vert.

Note- L'épinglage sur ces graphiques à barres peut différer de ce qui est indiqué sur la fiche technique. La rotation de l'appareil de 180 degrés corrigera le changement, faisant de la broche 11 la première broche en ligne.

Code Arduino

/*
   LED bar graph
   Turns on a series of LEDs based on the value of an analog sensor. 
   This is a simple way to make a bar graph display. 
   Though this graph uses 8LEDs, you can use any number by
      changing the LED count and the pins in the array.
   This method can be used to control any series of digital
      outputs that depends on an analog input.
*/

// these constants won't change:
const int analogPin = A0; // the pin that the potentiometer is attached to
const int ledCount = 8; // the number of LEDs in the bar graph
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // an array of pin numbers to which LEDs are attached

void setup() {
   // loop over the pin array and set them all to output:
   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
      pinMode(ledPins[thisLed], OUTPUT);
   }
}

void loop() {
   // read the potentiometer:
   int sensorReading = analogRead(analogPin);
   // map the result to a range from 0 to the number of LEDs:
   int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
   // loop over the LED array:
   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
      // if the array element's index is less than ledLevel,
      // turn the pin for this element on:
      if (thisLed < ledLevel) {
         digitalWrite(ledPins[thisLed], HIGH);
      }else { // turn off all pins higher than the ledLevel:
         digitalWrite(ledPins[thisLed], LOW);
      }
   }
}

Code à noter

L'esquisse fonctionne comme ceci: d'abord, vous lisez l'entrée. Vous mappez la valeur d'entrée à la plage de sortie, dans ce cas dix LED. Ensuite, vous configurez unfor-looppour itérer sur les sorties. Si le numéro de sortie de la série est inférieur à la plage d'entrée mappée, vous l'activez. Sinon, vous le désactivez.

Résultat

Vous verrez le voyant s'allumer un par un lorsque la valeur de la lecture analogique augmente et s'éteindre un par un pendant que la lecture diminue.