Problemas con la condicion if y el max_7219

Este es el problema por el que "la matriz cambia aleatoriamente", mira lo que programaste

//piso -1  
  if(digitalRead(A) == HIGH && digitalRead(B) == LOW && digitalRead(C) == LOW && digitalRead(D) == LOW ) {
//piso 1
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 2 
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 3
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 4
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 5
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 6
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 7
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 8
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
 //piso 9 
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 10
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 11
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 12
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
//piso 13
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {
// piso 14
  if(digitalRead(2) == HIGH && digitalRead(3) == LOW && digitalRead(4) == LOW && digitalRead(5) == LOW ) {

Solo hiciste la combinación de entradas para el "-1" y se repite para todos los pisos, por eso muestra... todos los pisos.
Lo hace tan rápido que parecen números aleatorios pero en realidad es toda la secuencia en un ciclo continuo. :man_facepalming:t2:

Deberías haber hecho así

//piso -1  
  if(digitalRead(A) == HIGH && digitalRead(B) == LOW && digitalRead(C) == LOW && digitalRead(D) == LOW ) {
//piso 1
  if(digitalRead(A) == HIGH && digitalRead(B) == HIGH && digitalRead(4c) == LOW && digitalRead(D) == LOW ) {
//piso 2 
  if(digitalRead(A) == LOW && digitalRead(B) == HIGH && digitalRead(4c) == LOW && digitalRead(D) == LOW ) {
//piso 3
  if(digitalRead(A) == LOW && digitalRead(B) == HIGH && digitalRead(4c) == HIGH && digitalRead(D) == LOW ) {
...etc.
1 Like