Outils pour utilisateurs

Outils du site


diy:grove:afficheurs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
diy:grove:afficheurs [2020/04/03 17:28] jbpueldiy:grove:afficheurs [2020/04/03 17:40] (Version actuelle) – [Afficheur 4 chiffres] jbpuel
Ligne 2: Ligne 2:
  
 ===== Afficheur LCD RGB backlight ===== ===== Afficheur LCD RGB backlight =====
- 
-Une fois installée la bibliothèque dans l'IDE Arduino, on dispose de fichiers d'exemple permettant de tester les différentes commandes. 
  
 <code C++> <code C++>
Ligne 55: Ligne 53:
 </code> </code>
  
 +===== Afficheur Barre de LED =====
  
 +Cet afficheur est composé de 10 barres (Leds), 8 vertes, 1 orange et 1 rouge.\\
 +On peut les piloter individuellement ou bien considérer qu'elles représentent un "niveau" entre 0 et 10, soit aucune barre allumée ou bien toutes les barres allumées respectivement, ainsi que toutes les valeurs intermédiaires.
 +
 +Pour définir individuellement l'état des barres, on utilise un masque binaire sur 10 bits. Par exemple le nombre binaire ''0b000000000000101'' soit 5 en décimal correspond à l'allumage des barres 1 et 3.\\
 +C'est sous cette forme qu'est attendu le paramètre de la fonction setBits et le résultat renvoyé par la fonction getBits.
 +
 +Pour définir un niveau, c'est un entier entre 0 et 10.\\
 +
 +
 +Le programme suivant utilise toutes les fonctions disponibles :
 +
 +<code C++>
 +#include <Grove_LED_Bar.h>
 +
 +Grove_LED_Bar barre(7, 6, 1, LED_BAR_10); // Clock pin, Data pin, Orientation, Type de barre)
 +// Orientation : 1 = Vert à Rouge, 0 = Rouge à Vert - Autre type : LED_CIRCULAR_24
 +
 +unsigned int etat;
 +
 +void setup() {
 +  barre.begin();
 +  barre.setGreenToRed(1); // Change l'orientation : 1 = Vert à Rouge, 0 = Rouge à Vert
 +}
 +
 +void loop() {
 +  // Adressage individuel des Leds : setBits, getBits, setLed, toggleLed
 +  barre.setBits(0x0); // Eteint toutes les LEDs
 +  delay(1000);
 +  barre.setBits(0x3ff); // Allume toutes les LEDs, 0b000001111111111 ou 1023 en décimal
 +  delay(1000);
 +  barre.setBits(0b000000000000001); // Allume LED 1 : peut aussi s'écrire 0x1 en hexa ou 1 en décimal
 +  delay(1000);
 +  barre.setBits(0b000000000010100); // Allume LED 3 et 5 : soit 0x14 en hexa ou 20 en décimal
 +  delay(1000);
 +  etat = barre.getBits(); // Lecture de l'état actuel de la barre
 +  etat <<= 1; // Décalage à gauche (Led 4 et 6)
 +  barre.setBits(etat);
 +  delay(1000);
 +  etat >>= 2; // Décalage de 2 positions à droite (Led 2 et 4)
 +  barre.setBits(etat);
 +  delay(1000);
 +  barre.setLed(1, 1); // Allume Led 1
 +  barre.setLed(2, 0); // Eteint Led 2
 +  barre.toggleLed(7); // Bascule Led 7
 +  delay(2000);
 +  // Adressage des Leds par niveaux
 +  for (int i = 0; i <= 10; i++) {
 +    barre.setLevel(i);
 +    delay(500);
 +  }
 +  delay(1000);
 +}
 +</code>
 +
 +===== Afficheur 4 chiffres =====
 +
 +Dans la bibliothèque TM1637 fournie pour Grove, plusieurs fonctions d'affichage sont disponibles (voir exemples). Ici on utilise displayNum() dont le comportement présente une anomalie (ou un choix des développeurs) : les valeurs 0 ne sont pas affichées. Il est possible de modifier le fichier TM1637.cpp de la bibliothèque pour changer ce comportement : [[diy:grove:programmes#patch_de_la_bibliotheque_grove_pour_tm1637|Patch de la bibliothèque]]
 +==== Avec la bibliothèque Grove (modifiée) ====
 +
 +<code C++>
 +#include "TM1637.h"
 +
 +// Définition des pins pour TM1637 : connecter sur D6 du shield Grove
 +const int CLK = 6;
 +const int DIO = 7;
 +TM1637 afficheur(CLK, DIO);
 +
 +void setup() {
 +  afficheur.init();
 +  afficheur.set(BRIGHT_TYPICAL); // BRIGHT_TYPICAL = 2, BRIGHT_DARKEST = 0, BRIGHTEST = 7
 +}
 +
 +void loop() {
 +  int potar = analogRead(A0);
 +  int val = map(potar,0,1023,-50, 50);
 +  delay(150);
 +  afficheur.displayNum(val);
 +}
 +</code>
 +
 +==== Avec la bibliothèque alternative TM1637Display ====
 +
 +Bibliothèque de [[https://github.com/avishorp/TM1637|Avishay Orpaz]]\\
 +[[https://www.makerguides.com/tm1637-arduino-tutorial/|Tuto]] complet avec cette bibliothèque.
 +
 +<code C++>
 +#include <TM1637Display.h>
 +
 +// Définition des pins pour TM1637 : connecter sur D6 du shield Grove
 +const int CLK = 6;
 +const int DIO = 7;
 +
 +TM1637Display afficheur(CLK, DIO);
 +
 +void setup() {
 +  afficheur.clear();
 +  afficheur.setBrightness(2);
 +}
 +
 +void loop() {
 +  int potar = analogRead(A0);
 +  int val = map(potar,0,1023, 0, 100);
 +  delay(150);
 +  afficheur.showNumberDec(val);
 +}
 +</code>
diy/grove/afficheurs.1585934917.txt.gz · Dernière modification : 2020/04/03 17:28 de jbpuel