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); }