[Tuto] Utiliser un bargraphe avec un Arduino
Posté sur: mai 9, 2013
Catégories: Arduino
Le bargraphe est un ensemble de LED. Il est très pratique pour visualiser des niveaux. Nous allons ici effectué un programme dans la continuité du programme sur les capteurs (Tuto ici: https://letmeknow.fr/fr/blog/5-tuto-utiliser-un-capteur-avec-le-arduino).
Nous utilisons un modèle ELB-1001 dont la documentation est présente ici: http://www.everlight.com/datasheets/B1001SYGWA-S530-E2_datasheet.pdf
Liste des composants
- Un arduino (nous utiliserons le modèle Arduino Nano v3)
- Un capteur (nous utliserons comme dans le précédant tuto un capteur de luminosité)
- Une résistance pour le capteur (ici 10k?)
- Un bargraphe (nous utilisons un ELB-1001)
- Des résistances pour limiter le courant dans le bargraphe (avec ce bargraphe nous utilisons des 1k? pour prolonger sa durée de vie)
Montage
Pour le montage, nous repartons du montage précédent en ajoutant le bargraphe comme 10 LEDs indépendantes avec leurs résistances associées sur 10 sorties numériques du Arduino.
L'équivalent en montage avec des LEDs est:
- Programme
On repars du programme précédent en ajoutant différents éléments:
- Une variable globale pour le nombre de LED
- Un tableau avec les pins utilisées pour les LEDs
- La définition des sorties dans le setup()
- Une variable ledLevel entre 0 et 10 pour commander le bargraphe grace à la fonction map() pour plus d'information regardez la documentation officielle http://arduino.cc/de/Reference/Map
- Un if qui affiche un nombre de LED proportionnel à la valeur de ledLevel
// 09/05/2013
// Letmeknow.fr
// Capteur & 10k resistor en pont diviseur entre 5V et GND
// Bargraphe sur les sorties D2 a D11
#include
#define SENS_PIN 5 // Pin utilisée pour le capteur
#define LED_COUNT 10 // Nombre de LEDs utilisées
double sens; // Variable comprenant la temperature
double V_IN = 5.0; // Variable de la tension d'alimentatio
double R1 = 10000; // Valeur de la resistance en parallele
int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; // Tableau comprenant les références des pins utilisés
void setup() {
Serial.begin(9600);
for (int thisLed = 0; thisLed < LED_COUNT; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT); // Boucle pour définir les pin utilisees comme sortiesn }
}
void loop() {
sens = analogRead(SENS_PIN); // Lecture de la valeur du capteur
Serial.print("Valeur mesuree = ");
Serial.print(sens); // Affichage de la valeur mesurée de 0 à 1024
Serial.print("n");
int ledLevel = map(sens, 0, 1023, 0, LED_COUNT); // Creation d'une valeur en 0 et LED_COUNT fonction de la mesure
for (int thisLed = 0; thisLed < LED_COUNT; thisLed++) {
// Si la valeur est inferieur a LED_COUNT on allume la LED
if (thisLed < ledLevel) { digitalWrite(ledPins[thisLed], HIGH);
}
// turn off all pins higher than the ledLevel:
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
// Pause de 1 seconde
delay(1000);
}
Connectez-vous pour commenter
Se connecter