Horloge digitale

De Les Fabriques du Ponant
Aller à : navigation, rechercher
/////////////////////////////////
//                             //
//      Afficher des Pictos    //
//  Sur une matrice de LED 8X8 //
//                             //
/////////////////////////////////
///////////////////////////////////////////////////////////////////
//                           BROCHAGE                            //
//                      _________________                        //
//                     /     D1 mini     \                       //
//                 -  |[ ]RST        TX[ ]| -                    //
//                 -  |[ ]A0         RX[ ]| -                    //
//                 -  |[ ]D0         D1[ ]| -                    //
//             Din -  |[X]D5         D2[ ]| -                    //
//             CLK -  |[X]D6         D3[ ]| -                    //
//              CS -  |[X]D7         D4[ ]| LED_BUILTIN          //
//                 -  |[ ]D8        GND[X]| -                    //
//                 -  |[X]3V3 .      5V[ ]| -                    //
//                    |       +---+       |                      //
//                    |_______|USB|_______|                      //
///////////////////////////////////////////////////////////////////      
/*
Matériel :
- un Wemos
- une matrice de LED MAX7219.
- Quelques cable dupont
tutoriel disponible sur : http://wikidebrouillard.dokit.io/wiki/Afficher_des_pictos_sur_une_matrice_de_led_8X8

Programme inspiré des exemples de la bibliothèque "LedControl.h"

   ___
 / ___ \
|_|   | |
     /_/ 
     _   ___   _ 
    |_| |___|_| |_
         ___|_   _|
        |___| |_|
Les petits Débrouillards - CC-By-Sa http://creativecommons.org/licenses/by-nc-sa/3.0/
Antony Le Goïc-Auffret
*/
#include "LedControl.h"

#define CS_broche D7
#define CLK_broche D6
#define DIN_broche D5

LedControl lc=LedControl(DIN_broche,CLK_broche,CS_broche,4);   
// On défini un ensemble de matrice de led "lc". 
// Dans l'ordre, on branche les broches Din sur la broche D5, CLK sur D6, CS sur D7. 
// le dernier chiffre indique le nombre de matrice de LED (il peut y en avoir jusqu'à 8). 
// ici on n'en a qu'une.

unsigned long dureeImage=200;  // Durée d'affichage de chaque image

// Pour créer une image, il faut allumer ou éteindre certaines led
// Les valeurs qui gèrent l'allumage de chaque LED sont dans un tableau (0 = led éteinte, 1 = Led Allulmée).
byte coeurPetit[] = //le tableau contient 8 octet (byte), chaque octet code une ligne de la matrice de led
{
B00000000,
B00110110,
B01111111,
B01111111,
B00111110,
B00011100,
B00001000,
B00000000
};

byte coeur[] =
{
B01100110,
B11111111,
B11111111,
B11111111,
B01111110,
B00111100,
B00011000,
B00000000
};

byte coeurGros[] =
{
B11101110,
B11111111,
B11111111,
B11111111,
B11111110,
B01111100,
B00111000,
B00010000
};

void setup()
{
  lc.shutdown(0,false);  // Allule la matrice de led
  lc.setIntensity(0,1);  // règle la luminosité (de 1 à 10)
  lc.clearDisplay(0);    // efface la matrice (éteint toute les les led).
}


//  Prendre les valeurs dans les tableaux et les afficher
void battement1()
{
  for (int i = 0; i < 8; i++)  
  {
    lc.setRow(0,i,coeurPetit[i]);
  }
}

void battement2()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,coeur[i]);
  }
}

void battement3()
{
  for (int i = 0; i < 8; i++)
  {
    lc.setRow(0,i,coeurGros[i]);
  }
}

void loop()
{
battement1();       // on affiche la première image du petit coeur.
delay(dureeImage);  // pendant une durée de dureeImage millisecondes
battement2();       // on affiche la seconde image
delay(dureeImage);  // etc...
battement3();
delay(dureeImage);
battement2();
delay(dureeImage);
}