Dans ce projet, vous apprendrez à créer votre propre journal LED.
Nous le faisons avec une matrice LED 32X8 et un Arduino UNO. Le code fourni avec ce projet est long. En effet, vous devez créer vous-même chaque lettre, chiffre, etc. sur une grille 7X8. La raison pour laquelle c'est 7 par 8 est que nous n'utilisons que 7 des 8 lignes verticalement pour créer les personnages. La façon dont nous fabriquons les personnages signifie que nous avons sept rangées de huit de long. Chaque ligne est composée de uns et de zéros, 1 signifie que la lumière est allumée et 0 signifie qu'elle est éteinte.
- Niveau - Moyen 50%
- Durée - 45/75 Min 40%
- Coûts - 48.85 € complets 40%
Étape 1: Fournitures
1X Arduino UNO
Matrice LED 1X 32X8
Fils de cavalier 5X F / M
Étape 2: Construire et câbler
Étape 3: programmation
Maintenant que vous avez tout connecté, vous pouvez commencer la programmation.
Pour la programmation, il est important que vous disposiez de la bibliothèque ledcontrol. Vous en avez besoin pour contrôler les modules sur les matrices. Vous pouvez trouver cette bibliothèque dans l'IDE Arduino si vous allez gérer les bibliothèques et lorsque vous y êtes, tapez LedControl dans la barre de recherche.
C'est un code long, mais il ne s'agit que de dessiner des figures. La raison en est qu'une figure utilise sept lignes les unes sous les autres, vous pouvez également le faire en une seule. Mais il est plus facile de faire une figure de cette façon car vous la visualisez déjà partiellement. Vous savez donc déjà en partie à quoi cela ressemblera.
Si vous mettez le programme sur l'Arduino tel qu'il est actuellement, vous verrez l'électronique du texte pour vous. Vous pouvez l'ajuster pour afficher un texte de votre choix.
#comprendre
// garantit que les lumières LED ne s'allument qu'en cas de besoin
// si la valeur est inférieure à 14, il devient de plus en plus difficile de lire ce qu'il dit
BL long non signé [14] = {0};
// rend les broches et la quantité d'écrans clairs
LedControl lc = LedControl (11,13,10,4, XNUMX, XNUMX, XNUMX);
// ici vous mettez le texte que vous souhaitez afficher
const unsigned char scrollText [] PROGMEM = {"électronique pour vous"};
void setup ()
{
// c'est là que les écrans sont calibrés
pour (int x = 0; x <4; x ++)
{
lc.shutdown (x, faux);
lc.setIntensity (x, 8);
lc.clearDisplay (x);
}
}
// ici on s'assure que le texte bouge
boucle vide () {
scrollMessage (scrollText);
}
// ici nous dessinons chaque lettre, chiffre et ainsi de suite
const unsigned char font5x7[] PROGMEM = {
B00000000, // Espace
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
3,
B01000000, //!
B01000000,
B01000000,
B01000000,
B01000000,
B00000000,
B01000000,
2,
B10100000, // "
B10100000,
B10100000,
B00000000,
B00000000,
B00000000,
B00000000,
4,
B01010000, // #
B01010000,
B11111000,
B01010000,
B11111000,
B01010000,
B01010000,
6,
B00100000, // $
B01111000,
B10100000,
B01110000,
B00101000,
B11110000,
B00100000,
6,
B11000000, //%
B11001000,
B00010000,
B00100000,
B01000000,
B10011000,
B00011000,
6,
B01100000, // &
B10010000,
B10100000,
B01000000,
B10101000,
B10010000,
B01101000,
6,
B11000000, // »
B01000000,
B10000000,
B00000000,
B00000000,
B00000000,
B00000000,
3,
B00100000, // (
B01000000,
B10000000,
B10000000,
B10000000,
B01000000,
B00100000,
4,
B10000000, //)
B01000000,
B00100000,
B00100000,
B00100000,
B01000000,
B10000000,
4,
B00000000, // *
B00100000,
B10101000,
B01110000,
B10101000,
B00100000,
B00000000,
6,
B00000000, // +
B00100000,
B00100000,
B11111000,
B00100000,
B00100000,
B00000000,
6,
B00000000, //,
B00000000,
B00000000,
B00000000,
B11000000,
B01000000,
B10000000,
3,
B00000000, // -
B00000000,
B11111000,
B00000000,
B00000000,
B00000000,
B00000000,
6,
B00000000, //.
B00000000,
B00000000,
B00000000,
B00000000,
B11000000,
B11000000,
3,
B00000000, ///
B00001000,
B00010000,
B00100000,
B01000000,
B10000000,
B00000000,
6,
B01110000, // 0
B10001000,
B10011000,
B10101000,
B11001000,
B10001000,
B01110000,
6,
B01000000, // 1
B11000000,
B01000000,
B01000000,
B01000000,
B01000000,
B11100000,
4,
B01110000, // 2
B10001000,
B00001000,
B00010000,
B00100000,
B01000000,
B11111000,
6,
B11111000, // 3
B00010000,
B00100000,
B00010000,
B00001000,
B10001000,
B01110000,
6,
B00010000, // 4
B00110000,
B01010000,
B10010000,
B11111000,
B00010000,
B00010000,
6,
B11111000, // 5
B10000000,
B11110000,
B00001000,
B00001000,
B10001000,
B01110000,
6,
B00110000, // 6
B01000000,
B10000000,
B11110000,
B10001000,
B10001000,
B01110000,
6,
B11111000, // 7
B10001000,
B00001000,
B00010000,
B00100000,
B00100000,
B00100000,
6,
B01110000, // 8
B10001000,
B10001000,
B01110000,
B10001000,
B10001000,
B01110000,
6,
B01110000, // 9
B10001000,
B10001000,
B01111000,
B00001000,
B00010000,
B01100000,
6,
B00000000, //:
B11000000,
B11000000,
B00000000,
B11000000,
B11000000,
B00000000,
3,
B00000000, //;
B11000000,
B11000000,
B00000000,
B11000000,
B01000000,
B10000000,
3,
B00010000, //
B00100000,
B01000000,
B10000000,
B01000000,
B00100000,
B00010000,
5,
B00000000, // =
B00000000,
B11111000,
B00000000,
B11111000,
B00000000,
B00000000,
6,
B10000000, //>
B01000000,
B00100000,
B00010000,
B00100000,
B01000000,
B10000000,
5,
B01110000, //?
B10001000,
B00001000,
B00010000,
B00100000,
B00000000,
B00100000,
6,
B01110000, // @
B10001000,
B00001000,
B01101000,
B10101000,
B10101000,
B01110000,
6,
B01110000, // A
B10001000,
B10001000,
B10001000,
B11111000,
B10001000,
B10001000,
6,
B11110000, // B
B10001000,
B10001000,
B11110000,
B10001000,
B10001000,
B11110000,
6,
B01110000, // C
B10001000,
B10000000,
B10000000,
B10000000,
B10001000,
B01110000,
6,
B11100000, // D
B10010000,
B10001000,
B10001000,
B10001000,
B10010000,
B11100000,
6,
B11111000, // E
B10000000,
B10000000,
B11110000,
B10000000,
B10000000,
B11111000,
6,
B11111000, // F
B10000000,
B10000000,
B11110000,
B10000000,
B10000000,
B10000000,
6,
B01110000, // G
B10001000,
B10000000,
B10111000,
B10001000,
B10001000,
B01111000,
6,
B10001000, // H
B10001000,
B10001000,
B11111000,
B10001000,
B10001000,
B10001000,
6,
B11100000, // I
B01000000,
B01000000,
B01000000,
B01000000,
B01000000,
B11100000,
4,
B00111000, // J
B00010000,
B00010000,
B00010000,
B00010000,
B10010000,
B01100000,
6,
B10001000, // K
B10010000,
B10100000,
B11000000,
B10100000,
B10010000,
B10001000,
6,
B10000000, // L
B10000000,
B10000000,
B10000000,
B10000000,
B10000000,
B11111000,
6,
B10001000, // M
B11011000,
B10101000,
B10101000,
B10001000,
B10001000,
B10001000,
6,
B10001000, // N
B10001000,
B11001000,
B10101000,
B10011000,
B10001000,
B10001000,
6,
B01110000, // O
B10001000,
B10001000,
B10001000,
B10001000,
B10001000,
B01110000,
6,
B11110000, // P
B10001000,
B10001000,
B11110000,
B10000000,
B10000000,
B10000000,
6,
B01110000, // Q
B10001000,
B10001000,
B10001000,
B10101000,
B10010000,
B01101000,
6,
B11110000, // R
B10001000,
B10001000,
B11110000,
B10100000,
B10010000,
B10001000,
6,
B01111000, // S.
B10000000,
B10000000,
B01110000,
B00001000,
B00001000,
B11110000,
6,
B11111000, // T
B00100000,
B00100000,
B00100000,
B00100000,
B00100000,
B00100000,
6,
B10001000, // U
B10001000,
B10001000,
B10001000,
B10001000,
B10001000,
B01110000,
6,
B10001000, // V
B10001000,
B10001000,
B10001000,
B10001000,
B01010000,
B00100000,
6,
B10001000, // W
B10001000,
B10001000,
B10101000,
B10101000,
B10101000,
B01010000,
6,
B10001000, // X
B10001000,
B01010000,
B00100000,
B01010000,
B10001000,
B10001000,
6,
B10001000, // O
B10001000,
B10001000,
B01010000,
B00100000,
B00100000,
B00100000,
6,
B11111000, // Z
B00001000,
B00010000,
B00100000,
B01000000,
B10000000,
B11111000,
6,
B11100000, // [
B10000000,
B10000000,
B10000000,
B10000000,
B10000000,
B11100000,
4,
B00000000, // (\)
B10000000,
B01000000,
B00100000,
B00010000,
B00001000,
B00000000,
6,
B11100000, //]
B00100000,
B00100000,
B00100000,
B00100000,
B00100000,
B11100000,
4,
B00100000, // ^
B01010000,
B10001000,
B00000000,
B00000000,
B00000000,
B00000000,
6,
B00000000, // _
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B11111000,
6,
B10000000, // »
B01000000,
B00100000,
B00000000,
B00000000,
B00000000,
B00000000,
4,
B00000000, // a
B00000000,
B01110000,
B00001000,
B01111000,
B10001000,
B01111000,
6,
B10000000, // b
B10000000,
B10110000,
B11001000,
B10001000,
B10001000,
B11110000,
6,
B00000000, // c
B00000000,
B01110000,
B10001000,
B10000000,
B10001000,
B01110000,
6,
B00001000, // d
B00001000,
B01101000,
B10011000,
B10001000,
B10001000,
B01111000,
6,
B00000000, // e
B00000000,
B01110000,
B10001000,
B11111000,
B10000000,
B01110000,
6,
B00110000, // f
B01001000,
B01000000,
B11100000,
B01000000,
B01000000,
B01000000,
6,
B00000000, // g
B01111000,
B10001000,
B10001000,
B01111000,
B00001000,
B01110000,
6,
B10000000, // h
B10000000,
B10110000,
B11001000,
B10001000,
B10001000,
B10001000,
6,
B01000000, // i
B00000000,
B11000000,
B01000000,
B01000000,
B01000000,
B11100000,
4,
B00010000, // j
B00000000,
B00110000,
B00010000,
B00010000,
B10010000,
B01100000,
5,
B10000000, // k
B10000000,
B10010000,
B10100000,
B11000000,
B10100000,
B10010000,
5,
B11000000, // l
B01000000,
B01000000,
B01000000,
B01000000,
B01000000,
B11100000,
4,
B00000000, // m
B00000000,
B11010000,
B10101000,
B10101000,
B10001000,
B10001000,
6,
B00000000, // n
B00000000,
B10110000,
B11001000,
B10001000,
B10001000,
B10001000,
6,
B00000000, // o
B00000000,
B01110000,
B10001000,
B10001000,
B10001000,
B01110000,
6,
B00000000, // p
B00000000,
B11110000,
B10001000,
B11110000,
B10000000,
B10000000,
6,
B00000000, // q
B00000000,
B01101000,
B10011000,
B01111000,
B00001000,
B00001000,
6,
B00000000, // r
B00000000,
B10110000,
B11001000,
B10000000,
B10000000,
B10000000,
6,
B00000000, // s
B00000000,
B01110000,
B10000000,
B01110000,
B00001000,
B11110000,
6,
B01000000, // t
B01000000,
B11100000,
B01000000,
B01000000,
B01001000,
B00110000,
6,
B00000000, // u
B00000000,
B10001000,
B10001000,
B10001000,
B10011000,
B01101000,
6,
B00000000, // v
B00000000,
B10001000,
B10001000,
B10001000,
B01010000,
B00100000,
6,
B00000000, // w
B00000000,
B10001000,
B10101000,
B10101000,
B10101000,
B01010000,
6,
B00000000, // x
B00000000,
B10001000,
B01010000,
B00100000,
B01010000,
B10001000,
6,
B00000000, // y
B00000000,
B10001000,
B10001000,
B01111000,
B00001000,
B01110000,
6,
B00000000, // z
B00000000,
B11111000,
B00010000,
B00100000,
B01000000,
B11111000,
6,
};
// ici on s'assure qu'il y a 7 LED verticalement
// les lumières s'allument
void rotate () {
pour (int a = 0; a <7; a ++) {
non signé long x = BL [a * 2];
octet b = bitRead (x, 31);
x = x << 1;
BL [a * 2] = x;
x = BL [a * 2 + 1];
x = x << 1;
bitWrite (x, 0, b);
BL [a * 2 + 1] = x;
}
}
// ici nous nous assurons que chaque lettre, chiffre et solide
// est disponible pour utilisation
void load (int ascii) {
si (ascii> = 0x20 && ascii <= 0x7f) {
pour (int a = 0; a <7; a ++) {
unsigned long c = pgm_read_byte_near (font5x7 + ((ascii - 0x20) * 8) + a);
non signé long x = BL [a * 2];
x = x | c ;
BL [a * 2] = x;
}
nombre d'octets = pgm_read_byte_near (font5x7 + ((ascii - 0x20) * 8) + 7);
pour (octet x = 0; x <nombre; x ++) {
tourner ();
impression ();
délai (10);
}
}
}
// ici nous nous assurons que le texte suit les bonnes matrices
void print () {
pour (int a = 0; a <7; a ++) {
non signé long x = BL [a * 2 + 1];
octet y = x;
lc.setRow (3, a, y);
x = BL [a * 2];
y = (x >> 24);
lc.setRow (2, a, y);
y = (x >> 16);
lc.setRow (1, a, y);
y = (x >> 8);
lc.setRow (0, a, y);
}
}
// ici nous nous assurons que le texte de
// se déplace de droite à gauche
void scrollMessage (const unsigned char * messageString) {
compteur int = 0;
int myChar = 0;
faire {
myChar = pgm_read_byte_near (messageString + compteur);
if (myChar! = 0) {
charge (myChar);
}
counter ++;
}
while (myChar! = 0);
}
Vous avez maintenant une alarme Arduino fonctionnelle!