Horloge digitale

De Les Fabriques du Ponant
Révision datée du 18 janvier 2019 à 10:46 par Antonydbzh (discussion | contributions) (Page créée avec « <pre> ///////////////////////////////// // // // Afficher des Pictos // // Sur une matrice de LED 8X8 // // ... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher
/////////////////////////////////
//                             //
//      Afficher des Pictos    //
//  Sur une matrice de LED 8X8 //
//                             //
/////////////////////////////////
/*                                        +-----+
             +----[PWR]-------------------| USB |--+
             |                            +-----+  |
             |         GND/RST2  [ ][ ]            |
             |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] | 
             |          5V/MISO2 [ ][ ]  A4/SDA[ ] |   
             |                             AREF[ ] |
             |                              GND[ ] |
             | [ ]N/C                    SCK/13[ ] |  
             | [ ]IOREF                 MISO/12[X] |   DataIn (ou Din)
             | [ ]RST                   MOSI/11[X]~|   CLK (pour Clock)
             | [ ]3V3    +---+               10[X]~|   CS (Load)
       VCC   | [X]5v    -| A |-               9[ ]~|   
       GND   | [X]GND   -| R |-               8[ ] |  
             | [ ]GND   -| D |-                    |
             | [ ]Vin   -| U |-               7[ ] |    
             |          -| I |-               6[ ]~|    
             | [ ]A0    -| N |-               5[ ]~|    
             | [ ]A1    -| O |-               4[ ] |    
             | [ ]A2     +---+           INT1/3[ ]~|    
             | [ ]A3                     INT0/2[ ] |    
             | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
             | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
             |            [ ] [ ] [ ]              |
             |  UNO_R3    GND MOSI 5V  ____________/
              \_______________________/

Matériel :
- un Arduino
- une matrice de LED MAX7219.
- Quelques cable dupont

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"

LedControl lc=LedControl(12,11,10,1);   // On défini un ensemble de matrice de led "lc". Dans l'ordre, on branche les broches Din sur la broche 12, CLK sur 11, CS sur 10. 
// 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);
}