Buenas con todos, no tengo mucha experiencia en programación, solo sé y puedo lo básico. Estoy imprimiendo números y mensajes en matrices led 8x8 que están compuestas por el integrado max7219 con la librería Parola a través del IDE Arduino con una placa ESP32.
El problema se da cuando quiero integrar un par de displays de 7 segmentos con max 7219 para visualizar un numero especifico y agrego la librería LedControl, declaro los pines pero me encuentro con la situación de que la tarjeta tiene algunos pines de clk pero no puedo utilizar todos, solo puedo utilizar uno en especifico y no sé como compartir para la matriz led y el display de 7 segmentos, para que salgan al mismo tiempo numeros en la matriz y en el display.
Si alguien podria ayudarme con una posible solución se lo agradeceria, ya que he buscado en internet y encuentro algo de que se manejan con comunicaciones ISP pero no puedo dar con la solución..
Esta es la librera LedControl
Tienes un ejemplo que dice
/*
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn
pin 11 is connected to the CLK
pin 10 is connected to LOAD
We have only a single MAX72XX.
*/
y luego usa
LedControl lc=LedControl(12,11,10,1);
Puedes usar los pines que desees, no entiendo donde esta la complicación?
El problema es que quiero combinar las dos librerias para controlar una matriz led y el display de 7 segmentos por separado, cuando las combino en el mismo programa solo funciona la matriz pero el display no funciona
#include <MD_Parola.h>
#include "LedControlMS.h"
#include <MD_MAX72xx.h>
#include "Font_Data.h"
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 16
#define MAX_ZONES 2
#define ZONE_SIZE (MAX_DEVICES/MAX_ZONES)
#define CLK_PIN 18
#define DATA_PIN 23
#define CS_PIN 2
LedControl lc=LedControl(23,18,5,1);
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int i=0;
int j=0;
char buffer[50];
char char2 = ':';
void setup() {
// put your setup code here, to run once:
P.begin(MAX_ZONES);
P.setInvert(false);
// P.setIntensity(5,15);
P.setZone(0, 0, ZONE_SIZE-1);
P.setZone(1, ZONE_SIZE, MAX_DEVICES-1);
P.setFont(0, BigFontBottom);
P.setFont(1, BigFontUp);
P.displayZoneText(0, "BIENVENIDOS ", PA_CENTER, 40, 40, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.displayZoneText(1, "BIENVENIDOS ", PA_CENTER, 40, 40, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.synchZoneStart();
while (!P.getZoneStatus(0) || !P.getZoneStatus(1))
P.displayAnimate();
lc.shutdown (0, false);
lc.setIntensity(0,4);
lc.clearDisplay(0);
lc.setDigit(0,0,2, false);
}
void loop() {
// put your main code here, to run repeatedly:
lc.setDigit(0,0,5, false);
P.setFont(0, BigFontBottom);
P.setFont(1, BigFontUp);
P.displayZoneText(0, "BIENVENIDOS ", PA_CENTER, 40, 40, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.displayZoneText(1, "BIENVENIDOS ", PA_CENTER, 40, 40, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
P.synchZoneStart();
while (!P.getZoneStatus(0) || !P.getZoneStatus(1))
P.displayAnimate();
}
Este es el codigo que estoy utilizando
Lo que ocurre es que no estas VIENDO que usa cada librería y tal vez usen el mismo TIMER.
Revisa internamente las dos.
Creo que hay error con los pines que usas
Según la documentación de la librería MD_Parola tienes 2 opciones para definir los pines que usa
// HARDWARE SPI
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// SOFTWARE SPI
MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
Si solo pasas como parámetro el CS_PIN estás indicando que usa SPI hardware, entonces tienes que usar los pines ya definidos.
Para usar el pin 2 como CS tienes que definirlo como Software SPI e indicar los 3 pines que usa.
Pero hay otro problema, no puedes usar los pines 18 y 23 para ambas librerías.
O cambias DATA y CLK de Parola o se los cambias a LedControl.