In diesem Projekt lernen Sie, wie Sie Ihre eigene LED-Zeitung herstellen.
Wir tun dies mit einer 32X8 LED-Matrix und einem Arduino UNO. Der mit diesem Projekt gelieferte Code ist lang. Das liegt daran, dass Sie jeden Buchstaben, jede Zahl und dergleichen auf einem 7X8-Raster selbst erstellen müssen. Der Grund, warum es 7 x 8 ist, liegt darin, dass wir nur 7 der 8 Zeilen vertikal verwenden, um die Zeichen zu erstellen. Die Art und Weise, wie wir die Zeichen erstellen, bedeutet, dass wir sieben Reihen mit einer Länge von acht haben. Jede Zeile besteht aus Einsen und Nullen, 1 bedeutet, dass das Licht an ist und 0 bedeutet, dass es aus ist.
- Stufe - Mittel 50%
- Dauer - 45/75 min 40%
- Kosten - 48.85 € abgeschlossen 40%
Schritt 1: Anforderungen
1X Arduino UNO
1X 32X8 LED Matrix
5X F / M-Überbrückungskabel
Schritt 2: Bauen und Verkabeln
Schritt 3: Programmierung
Nachdem Sie alles angeschlossen haben, können Sie mit der Programmierung beginnen.
Für die Programmierung ist es wichtig, dass Sie über die LED-Steuerungsbibliothek verfügen. Sie benötigen diese, um die Module auf den Matrizen zu steuern. Sie finden diese Bibliothek in der Arduino IDE, wenn Sie Bibliotheken verwalten und dort LedControl in die Suchleiste eingeben.
Es ist ein langer Code, aber es zeichnet fast nur Figuren. Der Grund dafür ist, dass eine Figur sieben Zeilen untereinander verwendet. Sie können dies auch in einer Zeile tun. Dies erleichtert jedoch das Erstellen einer Figur, da Sie diese bereits teilweise visualisieren. Sie wissen also teilweise schon, wie es aussehen wird.
Wenn Sie das Programm so wie es jetzt ist auf den Arduino legen, sehen Sie den Text Elektronik für dich. Sie können dies anpassen, um einen Text Ihrer Wahl anzuzeigen.
#einschließen
// stellt sicher, dass die LED-Leuchten nur bei Bedarf aufleuchten
// Wenn der Wert unter 14 liegt, wird es immer schwieriger zu lesen, was er sagt
vorzeichenloses langes BL [14] = {0};
// stellt sicher, dass die Pins und die Anzahl der Anzeigen klar sind
LedControl lc = LedControl (11,13,10,4);
// Hier geben Sie den Text ein, den Sie anzeigen möchten
const unsigned char scrollText[] PROGMEM ={” Elektronik für dich “};
void setup ()
{
// hier werden die Bildschirme kalibriert
für (int x = 0; x <4; x ++)
{
lc.shutdown (x, false);
lc.setIntensity (x, 8);
lc.clearDisplay (x);
}
}
// hier bewegen wir den Text
void loop () {
scrollMessage (scrollText);
}
// hier zeichnen wir jeden Buchstaben, jede Zahl und dergleichen
const unsigned char font5x7[] PROGMEM = {
B00000000, // Leerzeichen
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, // Y.
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,
};
// hier stellen wir sicher, dass es 7 LED vertikal gibt
// Lichter gehen an
void rotate () {
für (int a = 0; a <7; a ++) {
vorzeichenloses langes x = BL [a * 2];
Byte 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;
}
}
// hier stellen wir sicher, dass jeder Buchstabe, jede Zahl und jede richtige
// steht zur Verfügung
Leerlast (int ascii) {
if (ascii> = 0x20 && ascii <= 0x7f) {
für (int a = 0; a <7; a ++) {
vorzeichenloses langes c = pgm_read_byte_near (font5x7 + ((ascii - 0x20) * 8) + a);
vorzeichenloses langes x = BL [a * 2];
x = x | C;
BL [a * 2] = x;
}
Byteanzahl = pgm_read_byte_near (font5x7 + ((ascii - 0x20) * 8) + 7);
für (Byte x = 0; x <Anzahl; x ++) {
drehen ();
drucken ();
Verzögerung (10);
}
}
}
// hier stellen wir sicher, dass der text den korrekten matrizen folgt
void print () {
für (int a = 0; a <7; a ++) {
vorzeichenloses langes x = BL [a * 2 + 1];
Byte 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);
}
}
// hier stellen wir sicher, dass der text von
// bewegt sich von rechts nach links
void scrollMessage (const unsigned char * messageString) {
int-Zähler = 0;
int myChar = 0;
tun
myChar = pgm_read_byte_near (messageString + counter);
if (myChar! = 0) {
load (myChar);
}
Zähler ++;
}
while (myChar! = 0);
}
Sie haben jetzt einen funktionierenden Arduino-Alarm!