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