Auteur Antony Le Goïc-Auffret | Dernière modification 11/12/2020 par Antonydbzh
space-invaders Afficher_des_pictos_sur_une_matrice_de_led_8X8_matriceled8X8coeur.jpg
Nous allons utiliser la bibliothèque LedControl (pour l'installer cliquer "outil" puis "Gérer les bibliothèques" est dans la recherche vous tapez LedControl et suivez les instructions).
Pour afficher un smiley, c'est avec le programme suivant :///////////////////////////////// // // // 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. void setup() { lc.shutdown(0,false); // Allule la matrice de led lc.setIntensity(0,1); // règle la luminosité (de 1 à 15) de la matrice en postion 0 (la première et la seule dans notre exemple). lc.clearDisplay(0); // efface la matrice (éteint toute les led). } void loop() { lc.setRow(0,0,B00111100); // la fonction setRow s'utilise en mettant la position de la matrice, le numéro de ligne et l'octet qui gère la ligne. setRow(int adress, int ligne, byte octet). lc.setRow(0,1,B01000010); lc.setRow(0,2,B10100101); lc.setRow(0,3,B10000001); lc.setRow(0,4,B10100101); lc.setRow(0,5,B10011001); lc.setRow(0,6,B01000010); lc.setRow(0,7,B00111100); // Utilisez les documents de wikidébrouillard pour créer votre propres images. }Vous le copiez et le collez dans un fichier Arduino.
Vous pouvez utiliser le fichier disponible dans la liste du matériel pour vous aider à dessiner des image en "Pixel Art" et en déduire le code à mettre dans le programme Arduino.
///////////////////////////////// // // // Space Invader // // 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 invader1a[] = { B00011000, // Première image de l'envahisseur1 B00111100, B01111110, B11011011, B11111111, B00100100, B01011010, B10100101 }; byte invader1b[] = { B00011000, // Seconde image de l'envahisseur1 B00111100, // chaque octet encode l'allumage de chaque LED d'une ligne. B01111110, B11011011, B11111111, B00100100, B01011010, B01000010 }; byte invader2a[] = { B00100100, // Première image de l'envahisseur2 B00100100, B01111110, B11011011, B11111111, B11111111, B10100101, B00100100 }; byte invader2b[] = { B00100100, // Seconde image de l'envahisseur2 B10100101, B11111111, B11011011, B11111111, B01111110, B00100100, B01000010 }; void setup() { lc.shutdown(0,false); // Allule la matrice de led lc.setIntensity(0,1); // règle la luminosité (de 1 à 15) de la matrice en postion 0 (la première et la seule dans notre exemple). lc.clearDisplay(0); // efface la matrice (éteint toute les led). } // Prendre les valeurs dans les tableaux et les afficher void sinvader1a() { for (int i = 0; i < 8; i++) { lc.setRow(0,i,invader1a[i]); // La fonction setRow allume chaque les LEDs de chaque ligne en appellant chaque octet. } } void sinvader1b() { for (int i = 0; i < 8; i++) { lc.setRow(0,i,invader1b[i]); } } void sinvader2a() { for (int i = 0; i < 8; i++) { lc.setRow(0,i,invader2a[i]); } } void sinvader2b() { for (int i = 0; i < 8; i++) { lc.setRow(0,i,invader2b[i]); } } void attac1() { // pour animer l'envahisseur, on affiche les deux images alternativement 10 fois for (int i=0; i <= 10; i++){ sinvader1a(); delay(dureeImage); sinvader1b(); delay(dureeImage); } } void attac2() { // pour animer l'envahisseur, on affiche les deux images alternativement 10 fois for (int i=0; i <= 10; i++){ sinvader2a(); delay(dureeImage); sinvader2b(); delay(dureeImage); } } void loop() { attac1(); // On affiche le premier envahisseur lc.clearDisplay(0); // on efface l'affichage delay(200); attac2();// On affiche le second envahisseur lc.clearDisplay(0); // on efface l'affichage delay(200); }
Suivez les indication du programme :
Le site de l'artiste qui colle des space invaders sur les murs des villes du monde.
Un site permettant d'encoder des image et de créer facilement des animations : Led Matrix Editor
Dernière modification 11/12/2020 par user:Antonydbzh.
Published
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #