informatica:arduino:matrix_led
This is an old revision of the document!
Table of Contents
Panel Matrix led
Hay varias bibliotecas (que no librerías)
1. MD_MAX72XX y MD_Parola
https://microcontrollerslab.com/led-dot-matrix-display-esp32-max7219/
Bibliotecas: MD_MAX72XX by MajicDesigns and MD_Parola de MajicDesigns
| PANEL | ESP32 |
|---|---|
| VCC | Vin |
| GND | GND |
| DIN | GPIO23 |
| CS | GPIO5 |
| CLK | GPIO18 |
Texti de plano a pins
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// Uncomment according to your hardware type
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW
// Defining size, and output pins
#define MAX_DEVICES 4
#define DATA_PIN 23
#define CS_PIN 5
#define CLK_PIN 18
MD_Parola Display = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void setup() {
Display.begin();
Display.setIntensity(0);
Display.displayClear();
}
void loop() {
Display.setTextAlignment(PA_LEFT);
Display.print("ESP32");
delay(2000);
Display.setTextAlignment(PA_CENTER);
Display.print("ESP32");
delay(2000);
Display.setTextAlignment(PA_RIGHT);
Display.print("ESP32");
delay(2000);
Display.setTextAlignment(PA_CENTER);
Display.setInvert(true);
Display.print("ESP32");
delay(2000);
Display.setInvert(false);
delay(2000);
}
2. Max72xxPanel y SPI
Con esta biblioteca (que no librería) podemos definir en que posición sale cada carácter. Por ejemplo, si hacemos una secuencia de números, el 1 es mas estrecho que el 2
matrix.drawChar(x,y,char,color,bg,size);
Por ejemplo:
matrix.drawChar(0, 1, cadena[2], HIGH, LOW, 1);
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
const int pinCS = 5;
const int pinClk = 18;
const int pinDin = 23;
String cadena = "ESP32";
const int numberOfHorizontalDisplays = 4;
//const int numberOfHorizontalDisplays = 1; // retirar comentario para una sola matriz
const int numberOfVerticalDisplays = 1;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
void setup() {
matrix.setIntensity(7); // Use a value between 0 and 15 for brightness
//
matrix.setPosition(0, 0, 0); // The first display is at <0, 0>
matrix.setPosition(1, 1, 0); // The second display is at <1, 0>
matrix.setPosition(2, 2, 0); // The third display is at <2, 0>
matrix.setPosition(3, 3, 0); // And the last display is at <3, 0>
matrix.setRotation(0, 1); // Display is position upside down
matrix.setRotation(1, 1); // Display is position upside down
matrix.setRotation(2, 1); // Display is position upside down
matrix.setRotation(3, 1); // Display is position upside down
}
void loop() {
matrix.drawChar(0, 1, cadena[3], HIGH, LOW, 1);
matrix.write();
}
Para escribir una palabra:
Texto con Scroll:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
//Vcc - Vcc
//Gnd - Gnd
//Din - Mosi (Pin 11)
//Cs - SS (Pin 10)
//Clk - Sck (Pin 13)
const int pinCS = 5;
const int numberOfHorizontalDisplays = 4;
const int numberOfVerticalDisplays = 1;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
String tape = "Texto con Scroll"; //text
const int wait = 100; // In milliseconds
const int spacer = 1;
const int width = 5 + spacer; // The font width is 5 pixels
void setup() {
matrix.setIntensity(7); // Use a value between 0 and 15 for brightness
matrix.setRotation(0, 1); // Display is position upside down
matrix.setRotation(1, 1); // Display is position upside down
matrix.setRotation(2, 1); // Display is position upside down
matrix.setRotation(3, 1); // Display is position upside down
}
void loop() {
for (int i = 0; i < width * tape.length() + matrix.width() - 1 - spacer; i++) {
matrix.fillScreen(LOW);
int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text vertically
while (x + width - spacer >= 0 && letter >= 0) {
if (letter < tape.length()) {
matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
}
letter--;
x -= width;
}
matrix.write(); // Send bitmap to display
delay(wait);
}
}
informatica/arduino/matrix_led.1666654804.txt.gz · Last modified: by jose

