/*
// Número TOTAL de módulos 8x8 en el letrero
// Para 64x16: 8 módulos de ancho (1) x 2 modulos de alto = 16
// --- Pines para Hardware SPI en XIAO ESP32-C3 ---
// Los pines de DATA (MOSI (D10)) y CLK (SCK(D8)) son fijos y manejados por la librería SPI.
// Solo necesitamos definir el pin CS (Chip Select). (D1=GPIO3)
// --------------------------------------------------------------------
// VERSIÓN FINAL - TODO EN UN SOLO ARCHIVO PARA EVITAR ERRORES DE COMPILACIÓN
// --------------------------------------------------------------------
*/
// --------------------------------------------------------------------
// VERSIÓN FINAL CORREGIDA - TODO EN UN SOLO ARCHIVO Y SIN TYPOS
// --------------------------------------------------------------------
// 1. Activa los interruptores para las librerías.
#define ENA_BIG_FONT 1
#define FONT_DATA 1
// 2. Incluye las librerías necesarias.
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// 3. DATOS DE LA FUENTE
// Como esto viene DESPUÉS de los #include, el compilador ya sabe qué es 'fontType_t'
static const uint8_t BigFont[][16] =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x20
{ 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 }, // 0x21 !
{ 0x00, 0x00, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00 }, // 0x22 "
{ 0x18, 0x18, 0x7e, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x24, 0x24, 0xff, 0x24, 0xff, 0x24, 0x24, 0x00 }, // 0x23 #
{ 0x18, 0x3e, 0x60, 0x3c, 0x06, 0x7c, 0x18, 0x00, 0x24, 0x7c, 0x42, 0x7a, 0x42, 0x3a, 0x24, 0x00 }, // 0x24 $
{ 0x66, 0x66, 0x0c, 0x18, 0x30, 0x66, 0x66, 0x00, 0x66, 0x66, 0x60, 0x30, 0x18, 0x0c, 0x66, 0x00 }, // 0x25 %
{ 0x3c, 0x66, 0x6e, 0x3a, 0x6c, 0x66, 0x3c, 0x00, 0x38, 0x6c, 0x76, 0x6e, 0x66, 0x6c, 0x38, 0x00 }, // 0x26 &
{ 0x00, 0x00, 0x00, 0x0e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00 }, // 0x27 '
{ 0x00, 0x18, 0x3c, 0x66, 0x42, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7c, 0x7e, 0x06, 0x00, 0x00, 0x00 }, // 0x28 (
{ 0x00, 0x42, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7e, 0x7c, 0x60, 0x00, 0x00, 0x00 }, // 0x29 )
{ 0x00, 0x08, 0x2a, 0x1c, 0x2a, 0x08, 0x00, 0x00, 0x00, 0x20, 0x54, 0x38, 0x54, 0x20, 0x00, 0x00 }, // 0x2a *
{ 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00 }, // 0x2b +
{ 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x30, 0x60, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x00, 0x00 }, // 0x2c ,
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00 }, // 0x2d -
{ 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00 }, // 0x2e .
{ 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00 }, // 0x2f /
{ 0x3e, 0x66, 0x6e, 0x76, 0x7e, 0x66, 0x3e, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00 }, // 0x30 0
{ 0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x20, 0x30, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x00 }, // 0x31 1
{ 0x3e, 0x66, 0x06, 0x0c, 0x18, 0x30, 0x7e, 0x00, 0x7c, 0x66, 0x60, 0x30, 0x18, 0x0c, 0xff, 0x00 }, // 0x32 2
{ 0x3e, 0x66, 0x06, 0x1e, 0x06, 0x66, 0x3e, 0x00, 0x7c, 0x66, 0x60, 0x7c, 0x60, 0x66, 0x7c, 0x00 }, // 0x33 3
{ 0x6c, 0x6c, 0x6c, 0xfe, 0x0c, 0x0c, 0x0c, 0x00, 0x30, 0x30, 0x30, 0xff, 0x30, 0x30, 0x30, 0x00 }, // 0x34 4
{ 0x7e, 0x40, 0x40, 0x7c, 0x06, 0x06, 0x7c, 0x00, 0xff, 0x02, 0x02, 0x7a, 0x62, 0x66, 0x7a, 0x00 }, // 0x35 5
{ 0x3e, 0x60, 0x40, 0x7c, 0x46, 0x46, 0x3c, 0x00, 0x7c, 0x66, 0x02, 0x7a, 0x66, 0x66, 0x7a, 0x00 }, // 0x36 6
{ 0x7e, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00, 0xff, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x00 }, // 0x37 7
{ 0x3e, 0x66, 0x66, 0x3e, 0x66, 0x66, 0x3e, 0x00, 0x7c, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x7c, 0x00 }, // 0x38 8
{ 0x3e, 0x66, 0x66, 0x3e, 0x06, 0x0c, 0x7e, 0x00, 0x7c, 0x66, 0x66, 0x7a, 0x60, 0x30, 0x7c, 0x00 }, // 0x39 9
{ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00 }, // 0x3a :
{ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00 }, // 0x3b ;
{ 0x00, 0x18, 0x30, 0x60, 0x60, 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0x00 }, // 0x3c <
{ 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00 }, // 0x3d =
{ 0x00, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0x00, 0x00, 0x18, 0x30, 0x60, 0x60, 0x30, 0x18, 0x00 }, // 0x3e >
{ 0x3e, 0x66, 0x06, 0x0c, 0x18, 0x00, 0x18, 0x00, 0x7c, 0x66, 0x60, 0x30, 0x18, 0x00, 0x18, 0x00 }, // 0x3f ?
{ 0x3c, 0x66, 0xc0, 0xc0, 0xdc, 0x66, 0x3c, 0x00, 0x7c, 0x66, 0x03, 0x03, 0x7b, 0x66, 0x7c, 0x00 }, // 0x40 @
{ 0x3c, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x00, 0x7c, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x00 }, // 0x41 A
{ 0x7c, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x7c, 0x00, 0xfe, 0x66, 0x66, 0x7e, 0x66, 0x66, 0xfe, 0x00 }, // 0x42 B
{ 0x3c, 0x66, 0x40, 0x40, 0x40, 0x66, 0x3c, 0x00, 0x7c, 0x66, 0x02, 0x02, 0x02, 0x66, 0x7c, 0x00 }, // 0x43 C
{ 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0xfe, 0x66, 0x66, 0x66, 0x66, 0x66, 0xfe, 0x00 }, // 0x44 D
{ 0x7e, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x7e, 0x00, 0xff, 0x02, 0x02, 0x7a, 0x02, 0x02, 0xff, 0x00 }, // 0x45 E
{ 0x7e, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0xff, 0x02, 0x02, 0x7a, 0x02, 0x02, 0x02, 0x00 }, // 0x46 F
{ 0x3c, 0x66, 0x40, 0x40, 0x4e, 0x46, 0x3c, 0x00, 0x7c, 0x66, 0x02, 0x02, 0x6e, 0x66, 0x7c, 0x00 }, // 0x47 G
{ 0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x66, 0x00 }, // 0x48 H
{ 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00 }, // 0x49 I
{ 0x0e, 0x06, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x00, 0x70, 0x60, 0x60, 0x60, 0x60, 0x66, 0x7c, 0x00 }, // 0x4a J
{ 0x66, 0x6c, 0x78, 0x70, 0x78, 0x6c, 0x66, 0x00, 0x66, 0x6c, 0x38, 0xfe, 0x38, 0x6c, 0x66, 0x00 }, // 0x4b K
{ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7e, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xff, 0x00 }, // 0x4c L
{ 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00 }, // 0x4d M
{ 0x66, 0xe6, 0xf6, 0xde, 0xce, 0x66, 0x66, 0x00, 0x66, 0x66, 0x6e, 0x76, 0x7a, 0x6a, 0x66, 0x00 }, // 0x4e N
{ 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00 }, // 0x4f O
{ 0x7c, 0x66, 0x66, 0x7c, 0x40, 0x40, 0x40, 0x00, 0xfe, 0x66, 0x66, 0x7e, 0x02, 0x02, 0x02, 0x00 }, // 0x50 P
{ 0x3c, 0x66, 0x66, 0x66, 0x66, 0x6a, 0x3c, 0x0c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x6a, 0x7c, 0x18 }, // 0x51 Q
{ 0x7c, 0x66, 0x66, 0x7c, 0x78, 0x6c, 0x66, 0x00, 0xfe, 0x66, 0x66, 0x7e, 0x38, 0x6c, 0x66, 0x00 }, // 0x52 R
{ 0x3e, 0x60, 0x60, 0x3c, 0x06, 0x06, 0x7c, 0x00, 0x7a, 0x66, 0x02, 0x3a, 0x60, 0x66, 0x7a, 0x00 }, // 0x53 S
{ 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 }, // 0x54 T
{ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00 }, // 0x55 U
{ 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x9c, 0x78, 0x30, 0x00 }, // 0x56 V
{ 0xc6, 0xc6, 0xc6, 0xd6, 0xfe, 0xee, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00 }, // 0x57 W
{ 0x66, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x66, 0x00, 0x66, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0x66, 0x00 }, // 0x58 X
{ 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x00, 0xc6, 0xc6, 0x9c, 0x78, 0x30, 0x30, 0x30, 0x00 }, // 0x59 Y
{ 0x7e, 0x0c, 0x18, 0x30, 0x60, 0x40, 0x7e, 0x00, 0xff, 0x60, 0x30, 0x18, 0x0c, 0x06, 0xff, 0x00 }, // 0x5a Z
{ 0x00, 0xfe, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0xff, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 }, // 0x5b [
{ 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00 }, // 0x5c '\'
{ 0x00, 0x42, 0x42, 0x42, 0x42, 0xfe, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0xff, 0x00, 0x00 }, // 0x5d ]
{ 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x5e ^
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 }, // 0x5f _
{ 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x60 `
{ 0x00, 0x00, 0x3c, 0x06, 0x3e, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x00 }, // 0x61 a
{ 0x40, 0x40, 0x7c, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x02, 0x02, 0x7a, 0x66, 0x66, 0x66, 0x7a, 0x00 }, // 0x62 b
{ 0x00, 0x00, 0x3c, 0x40, 0x40, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x02, 0x02, 0x7c, 0x00 }, // 0x63 c
{ 0x06, 0x06, 0x3e, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x60, 0x60, 0x7a, 0x66, 0x66, 0x66, 0x7a, 0x00 }, // 0x64 d
{ 0x00, 0x00, 0x3c, 0x66, 0x7e, 0x40, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0x66, 0xff, 0x02, 0x7c, 0x00 }, // 0x65 e
{ 0x00, 0x1c, 0x32, 0x30, 0x7c, 0x30, 0x30, 0x00, 0x00, 0x38, 0x64, 0x60, 0xf8, 0x60, 0x60, 0x00 }, // 0x66 f
{ 0x00, 0x00, 0x3e, 0x66, 0x66, 0x3e, 0x06, 0x7c, 0x00, 0x00, 0x7a, 0x66, 0x66, 0x7a, 0x60, 0x7c }, // 0x67 g
{ 0x40, 0x40, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x00, 0x02, 0x02, 0x7a, 0x66, 0x66, 0x66, 0x66, 0x00 }, // 0x68 h
{ 0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x30, 0x00, 0x78, 0x30, 0x30, 0x78, 0x00 }, // 0x69 i
{ 0x00, 0x0c, 0x00, 0x1c, 0x0c, 0x0c, 0x1c, 0x00, 0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0x38, 0x00 }, // 0x6a j
{ 0x40, 0x40, 0x6c, 0x78, 0x60, 0x78, 0x6c, 0x00, 0x02, 0x02, 0x6c, 0x38, 0x60, 0xb8, 0x6c, 0x00 }, // 0x6b k
{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00 }, // 0x6c l
{ 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0xda, 0xfe, 0xd6, 0xd6, 0xc6, 0x00 }, // 0x6d m
{ 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0xda, 0x66, 0x66, 0x66, 0x66, 0x00 }, // 0x6e n
{ 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x7c, 0x00 }, // 0x6f o
{ 0x00, 0x00, 0x7c, 0x66, 0x66, 0x7c, 0x40, 0x40, 0x00, 0x00, 0x7a, 0x66, 0x66, 0x7a, 0x02, 0x02 }, // 0x70 p
{ 0x00, 0x00, 0x3e, 0x66, 0x66, 0x3e, 0x06, 0x0c, 0x00, 0x00, 0x7a, 0x66, 0x66, 0x7a, 0x60, 0x60 }, // 0x71 q
{ 0x00, 0x00, 0x6c, 0x76, 0x60, 0x40, 0x40, 0x00, 0x00, 0x00, 0x6c, 0x76, 0x02, 0x02, 0x02, 0x00 }, // 0x72 r
{ 0x00, 0x00, 0x3c, 0x40, 0x3c, 0x06, 0x7c, 0x00, 0x00, 0x00, 0x7a, 0x02, 0x7a, 0x60, 0x3a, 0x00 }, // 0x73 s
{ 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x12, 0x0c, 0x00, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x24, 0x18 }, // 0x74 t
{ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00 }, // 0x75 u
{ 0x00, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x9c, 0x78, 0x30, 0x00 }, // 0x76 v
{ 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xfe, 0x6c, 0x00 }, // 0x77 w
{ 0x00, 0x00, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x66, 0x38, 0x10, 0x38, 0x66, 0x00 }, // 0x78 x
{ 0x00, 0x00, 0x66, 0x66, 0x3e, 0x06, 0x0c, 0x08, 0x00, 0x00, 0xcc, 0xcc, 0x78, 0x30, 0x18, 0x00 }, // 0x79 y
{ 0x00, 0x00, 0x7c, 0x0c, 0x18, 0x30, 0x7c, 0x00, 0x00, 0x00, 0xfe, 0x30, 0x18, 0x0c, 0xfe, 0x00 }, // 0x7a z
{ 0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00 }, // 0x7b {
{ 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 }, // 0x7c |
{ 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00, 0x00 }, // 0x7d }
{ 0x00, 0x00, 0x00, 0x6c, 0x38, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x7e ~
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } // 0x7f
};
// 4. EL DESCRIPTOR DE LA FUENTE.
// Ahora es válido porque 'fontType_t' fue definido por MD_MAX72xx.h
const fontType_t BigFontDescriptor = { 8, 16, 32, 127, (const uint8_t*)BigFont };
// --- CONFIGURACIÓN DEL LETRERO ---
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define NUM_OF_MATRIX 16
#define CS_PIN 3
MD_Parola letrero = MD_Parola(HARDWARE_TYPE, CS_PIN, NUM_OF_MATRIX);
// --- LISTA DE MENSAJES ---
const char* mensajes[] = {
"Jerry Digital!",
"64x16",
"Funciona!",
};
// --- EFECTOS DE ENTRADA (CON LA 'E' LATINA CORRECTA) ---
textEffect_t efectosEntrada[] = {
PA_OPENING_CURSOR,
PA_SCROLL_LEFT,
PA_SPRITE,
};
// --- EFECTOS DE SALIDA (CON LA 'E' LATINA CORRECTA) ---
textEffect_t efectosSalida[] = {
PA_CLOSING_CURSOR,
PA_SCROLL_LEFT,
PA_GROW_DOWN,
};
// --- VARIABLES DE CONTROL ---
const uint8_t MAX_MENSAJES = sizeof(mensajes) / sizeof(mensajes[0]);
uint8_t indiceMensajeActual = 0;
int velocidad_animacion = 100;
String vel;
long velSlide = 100;
String proximo_mensaje = "";
// --- SETUP ---
void setup() {
SPI.begin();
letrero.begin();
letrero.setIntensity(5);
letrero.displayClear();
// Esta línea ahora funciona porque 'BigFontDescriptor' existe y es del tipo correcto.
letrero.setFont(&BigFontDescriptor);
letrero.displayText(mensajes[indiceMensajeActual], PA_CENTER, velocidad_animacion, 0, efectosEntrada[indiceMensajeActual], efectosSalida[indiceMensajeActual]);
}
// --- LOOP ---
void loop() {
if (letrero.displayAnimate()) {
actualizar_velocidad();
indiceMensajeActual++;
if (indiceMensajeActual >= MAX_MENSAJES) {
indiceMensajeActual = 0;
}
letrero.displayText(mensajes[indiceMensajeActual], PA_CENTER, velocidad_animacion, 0, efectosEntrada[indiceMensajeActual], efectosSalida[indiceMensajeActual]);
}
}
// --- FUNCIÓN DE VELOCIDAD ---
void actualizar_velocidad() {
if (proximo_mensaje.length() > 0) {
vel = proximo_mensaje;
float valor;
valor = vel.toFloat();
velSlide = map(valor, 0, 100, 200, 25);
velocidad_animacion = velSlide;
letrero.setSpeed(velocidad_animacion);
proximo_mensaje = "";
}
}
Loading
xiao-esp32-c3
xiao-esp32-c3