Go Down

Topic: [Partage] Librairie Leds & Leds RVB (Read 2901 times) previous topic - next topic

bricoleau

Jan 28, 2016, 09:51 pm Last Edit: Feb 07, 2016, 06:29 pm by bricoleau
Bonjour

Suite de la série "petites librairies en français et simples d'utilisation à destination des débutants"

Voici une librairie pour gérer facilement des leds lorsqu'elles sont branchées directement sur l'arduino.
led.allumer(), led.eteindre(), etc.

Prend également en charge la modulation d'intensité d'éclairage (via PWM).

Après installation, les exemples d'utilisation sont disponibles directement depuis l'IDE Arduino

Header :
Code: [Select]
//Librairie Arduino pour la gestion de leds
//Version 1.0
//
//Cablage : pin---LED---Résistance---GND
//ou bien : pin---LED---Résistance---5V  (mode inversé)
//
//Si la pin le permet (PWM), la modulation d'intensité est également accessible
//
//2 octets alloués en RAM par led
//Les fonctions non utilisées sont dégagées à la compilation
//
//Bricoleau 2016

#ifndef simpleLed_h
#define simpleLed_h

#include <Arduino.h>

class simpleLed
{
  public :
    //Constructeur
    simpleLed(uint8_t pin, bool inversion = false); //Activer l'inversion si la led est allumée lorsque la pin est à LOW

    //Primitives essentielles
    void eteindre();
    void allumer();
    void moduler(uint8_t intensite); //Sans effet si PWM pas disponible sur la pin

    //Constantes liées au cablage
    bool estModulable() const;
    bool estInversee() const;
    uint8_t pin() const;

    //Fonctions d'état
    uint8_t intensite() const                      {return this->_intensite;}
    bool estEteinte() const                        {return intensite() == 0;}
    bool estAllumee() const                        {return intensite() != 0;}
    bool estAllumeeAuMax() const                   {return intensite() == 255;}

    //Primitives secondaires
    void basculer()                                {if (estAllumee()) eteindre(); else allumer();}
    void commander(bool ON)                        {if (ON) allumer(); else eteindre();}
    void diminuerIntensite(uint8_t variation = 1)  {if (variation >= intensite()) eteindre(); else moduler(intensite() - variation);}
    void augmenterIntensite(uint8_t variation = 1) {if (variation >= 255 - intensite()) allumer(); else moduler(intensite() + variation);}

  private :
    uint8_t _cablage, _intensite;
};

#endif


Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

bricoleau

Conseil :

Prenez une carte arduino uno, cablez ainsi :
pin3-----LED1-----Résistance-----GND
pin4-----LED2-----Résistance-----GND
pin5-----LED3-----Résistance-----GND
pin7------BP-----GND

Et parcourez les 10 exemples fournis.
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

bricoleau

Bonjour

Voici une nouvelle bibliothèque, qui est une extension de la précédente, pour gérer facilement des leds RVB.

Header :
Code: [Select]
//Librairie Arduino pour la gestion de leds RVB
//Version 1.0
//
//Cablage d'une led RVB à cathode commune :
//  pinRouge---résistance---LED--|
//  pinVert----résistance---LED--+---GND
//  pinBleu----résistance---LED--|
//
//Cablage d'une led RVB à anode commune :
//  pinRouge---résistance---LED--|
//  pinVert----résistance---LED--+---5V
//  pinBleu----résistance---LED--|
//
//Si les pin de branchement le permettent (PWM), la modulation d'intensité de chaque couleur est également accessible
//
//6 octets alloués en RAM par led RVB
//
//Bricoleau 2016

#ifndef simpleLedRVB_h
#define simpleLedRVB_h

#include "simpleLed.h"

//Codes couleurs de base
const uint32_t RVB_BLANC       = 0xffffff;
const uint32_t RVB_NOIR        = 0x000000;

const uint32_t RVB_ROUGE       = 0xff0000;
const uint32_t RVB_VERT        = 0x00ff00;
const uint32_t RVB_BLEU        = 0x0000ff;

const uint32_t RVB_JAUNE       = 0xffff00;
const uint32_t RVB_FUCHSIA     = 0xff00ff;
const uint32_t RVB_CYAN        = 0x00ffff;

//Codes couleurs secondaires (nécessite PWM)
const uint32_t RVB_VERT_FONCE  = 0x008000;
const uint32_t RVB_GRIS        = 0x808080;
const uint32_t RVB_BORDEAUX    = 0x800000;
const uint32_t RVB_BLEU_MARINE = 0x000080;
const uint32_t RVB_OLIVE       = 0x808000;
const uint32_t RVB_VIOLET      = 0x800080;
const uint32_t RVB_ARGENT      = 0xc0c0c0;
const uint32_t RVB_SARCELLE    = 0x008080;

class simpleLedRVB
{
  public :
    //constructeur
    simpleLedRVB(uint8_t pinRouge, uint8_t pinVert, uint8_t pinBleu, bool anode_commune = false); //par défaut : cathode commune

    //primitives essentielles
    void changerCouleur(uint8_t rouge, uint8_t vert, uint8_t bleu);
    void changerCouleur(uint32_t couleur_RVB);

    void allumer()                 {changerCouleur(RVB_BLANC);}
    void eteindre()                {changerCouleur(RVB_NOIR);}

    //primitives secondaires
    uint8_t intensiteRouge() const {return ledRouge.intensite();}
    uint8_t intensiteVert() const  {return ledVerte.intensite();}
    uint8_t intensiteBleu() const  {return ledBleue.intensite();}
    uint32_t couleurRVB() const    {return ((uint32_t) intensiteRouge()<<16) | ((uint32_t) intensiteVert()<<8) | intensiteBleu();}

    bool estEteinte() const        {return ledRouge.estEteinte() && ledVerte.estEteinte() && ledBleue.estEteinte();}
    bool estAllumee() const        {return ledRouge.estAllumee() || ledVerte.estAllumee() || ledBleue.estAllumee();}

    //constantes liées au cablage
    bool rougeEstModulable() const {return ledRouge.estModulable();}
    bool vertEstModulable() const  {return ledVerte.estModulable();}
    bool bleuEstModulable() const  {return ledBleue.estModulable();}
    bool estModulable() const      {return rougeEstModulable() && vertEstModulable() && bleuEstModulable();}

    bool anodeCommune() const      {return ledRouge.estInversee();}
    bool cathodeCommune() const    {return !anodeCommune();}
    uint8_t pinRouge() const       {return ledRouge.pin();}
    uint8_t pinVert() const        {return ledVerte.pin();}
    uint8_t pinBleu() const        {return ledBleue.pin();}

  private :
    simpleLed ledRouge, ledVerte, ledBleue;
};

#endif


Après installation de la bibliothèque, trois programmes exemples sont accessibles directement depuis l'IDE Arduino
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

Go Up