Horloge digitale
Révision datée du 18 janvier 2019 à 11:46 par Antonydbzh (discussion | contributions)
/////////////////////////////////
// //
// 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);
}
