hola este es mi primer post y espero ser mas un aporte que estar molestando jajaja,
tengo un problema, les cuento, estoy trabajando en un proyecto que consiste en 4 entradas de 0-24v o seria 0-1 en binario que hacen una combinación que indicarían que piso esta el ascensor (adjunto imagen)
estoy usando las condiciones if para cada caso de ubicación de piso, lo cual estas combinaciones la estoy llevando a mostrar en dos matriz max7219 8*8, el problema ocurre cuando lo cargo al arduino, la matriz cambia aleatoriamente a los numeros que he programado y no logro arreglar ese problema, ademas de que los led de la matriz parpadean y no mantienen la intensidad del brillo que las configure, cabe mencionar que hice el test para saber si las matriz estan operativas
#include "LedControl.h" // incluye libreria LedControl
LedControl lc=LedControl(11,13,10,2); // crea objeto
byte menos[8]= { // array que contiene todos los elementos de las
B00000000, // filas necesarias por mostrar el digito uno
B00000000,
B00000000,
B01111110,
B00000000,
B00000000,
B00000000,
B00000000
};
byte cero[8]= { // array que contiene todos los elementos de las
B00111000, // filas necesarias por mostrar el digito cero
B01000100,
B01000100,
B01000100,
B01000100,
B01000100,
B01000100,
B00111000
};
byte uno[8]= { // array que contiene todos los elementos de las
B00010000, // filas necesarias por mostrar el digito uno
B00110000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00111000
};
byte dos[8]= { // array que contiene todos los elementos de las
B00111000, // filas necesarias por mostrar el digito dos
B01000100,
B00000100,
B00000100,
B00001000,
B00010000,
B00100000,
B01111100
};
byte tres[8]= { // array que contiene todos los elementos de las
B00111000, // filas necesarias por mostrar el digito tres
B01000100,
B00000100,
B00011000,
B00000100,
B00000100,
B01000100,
B00111000
};
byte cuatro[8]= { // array que contiene todos los elementos de las
B00001000, // filas necesarias por mostrar el digito cuatro
B00011000,
B00101000,
B01001000,
B01001000,
B01111100,
B00001000,
B00001000
};
byte cinco[8]= { // array que contiene todos los elementos de las
B01111100, // filas necesarias por mostrar el digito cinco
B01000000,
B01000000,
B01111000,
B00000100,
B00000100,
B01000100,
B00111000
};
byte seis[8]= { // array que contiene todos los elementos de las
B00111000, // filas necesarias por mostrar el digito seis
B01000100,
B01000000,
B01111000,
B01000100,
B01000100,
B01000100,
B00111000
};
byte siete[8]= { // array que contiene todos los elementos de las
B01111100, // filas necesarias por mostrar el digito siete
B00000100,
B00000100,
B00001000,
B00010000,
B00100000,
B00100000,
B00100000
};
byte ocho[8]= { // array que contiene todos los elementos de las
B00111000, // filas necesarias por mostrar el digito ocho
B01000100,
B01000100,
B00111000,
B01000100,
B01000100,
B01000100,
B00111000
};
byte nueve[8]= { // array que contiene todos los elementos de las
B00111000, // filas necesarias por mostrar el digito nueve
B01000100,
B01000100,
B01000100,
B00111100,
B00000100,
B01000100,
B00111000
};
int A=2;
int B=3;
int C=4;
int D=5;
void setup() {
//Matriz 1
lc.shutdown(0,false); // enciende la matriz
lc.setIntensity(0,4); // establece brillo
//Matriz 2
lc.shutdown(1,false); // enciende la matriz
lc.setIntensity(1,4); // establece brillo
//Estos pines es de las 4 entradas binarias
pinMode (A, INPUT);
pinMode (B, INPUT);
pinMode (C, INPUT);
pinMode (D, INPUT);
}
void loop(){
//piso -1
if(digitalRead(A) == HIGH && digitalRead(B) == LOW && digitalRead(C) == LOW && digitalRead(D) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(1,i,menos[i]); // establece fila con valor de array cero en misma posicion
lc.setRow(0,i,uno[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 1
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,dos[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 2
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,dos[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 3
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,tres[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 4
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,cuatro[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 5
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,cinco[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 6
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,seis[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 7
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,siete[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 8
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,ocho[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 9
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(0,i,nueve[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 10
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(1,i,uno[i]); // establece fila con valor de array cero en misma posicion
lc.setRow(0,i,cero[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 11
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(1,i,uno[i]); // establece fila con valor de array cero en misma posicion
lc.setRow(0,i,uno[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 12
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(1,i,uno[i]); // establece fila con valor de array cero en misma posicion
lc.setRow(0,i,dos[i]); // establece fila con valor de array cero en misma posicion
}
}
//piso 13
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(1,i,uno[i]); // establece fila con valor de array cero en misma posicion
lc.setRow(0,i,tres[i]); // establece fila con valor de array cero en misma posicion
}
}
// piso 14
if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
for (int i = 0; i < 8; i++) // bucle itera 8 veces por el array
{
lc.setRow(1,i,uno[i]); // establece fila con valor de array cero en misma posicion
lc.setRow(0,i,cuatro[i]); // establece fila con valor de array cero en misma posicion
}
}
}
alguna sugerencia como hacerlo funcionar?