Orientacion contador con max7219 8 digitos

Hola primero un saludo a todos .
Mi experiencia con arduino aparte de encender un led poco mas.osea otro muy novato :slight_smile:

Dicho esto os presento mi proyecto, se trata de un contador de metros para rally de regularidad,
normal mente se usan dos velocimetros de bicicleta para llevar la cuenta de los metros parciales y totales,
presentar la lectura de la sonda en dos display de 8 digitos con max 7219 conectados en cascada, anadir dos pulsadores independientes para cada display ,uno para ara reset otro para paro marcha
En este momento dispongo del siguiente material (en un futuro se le anadiran algunas funciones mas)

Arduino MEGA
Sonda magnetica (de velocimetro bicicleta)
Dos diaplay 8 digitos max 7219 (http://www.ebay.es/itm/141702246059?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT)

Mi regunta o mejor lo que necesito es un poco de orientacion de como seguir con el codigo para ver la lectura de la sonda en los dislpays puedo ver la lectura de la sonda y la suma de los metros en el monitor de serie

Os pongo mi codigo para que me corrijais si no voy bien y orienteis de como seguir

//Incluimos libreria
#include <LedControl.h>
/*pin 51 conectado a DIN
  pin 52 conectado a CLK
  pIN 2  conectado a CS
*/
LedControl lc = LedControl(51, 52, 2, 1);

int led = 22;//asociamos el numero de pin 22 a la variable led
int pulsador = 24; // asociamos el numero de pin 24 al pulsador

int estadoActual1 = 0;
int estadoActual2 = 0;
int estadoUltimo = 0;
int contador = 0;
float radioEnCm = 28.1; //ingresar radio de la rueda en cm
float pi = 3.1416;
float perimetroRueda = 2 * pi * (radioEnCm / 100); //Calcula Perimetro en metros
float distRecorrida = 0;
float distKM = 0;

void setup() {
  //Iniciamos

  lc.shutdown(0, false); //Entramos en modo ahorro de energia
  lc.setIntensity(0, 8); //Definimos el brillo del display
  lc.clearDisplay(0);//Borramos la pantalla
  
    pinMode(led,OUTPUT); //aqui configuramos el led como salida digital
  pinMode(pulsador,INPUT);//Aqui configuramos el pulsador como entrada digital
  digitalWrite(led,LOW); // iniciamos con el led apagado
  //Iniciamos el uerto de serie
  Serial.begin(9600);
}


 

void loop(){
        estadoActual1=digitalRead(24);
        delay(10);
        estadoActual2=digitalRead(24);
//Si los estados no son iguales, el sketch no hace nada
        if (estadoActual1 == estadoActual2) {
              if (estadoActual1 != estadoUltimo){
                    if (estadoActual1 == HIGH) {
                        contador = contador + 1;
                        Serial.print ("Vueltas ");
                        Serial.println(contador);
                        distancia();
                    }
              }
        }
        estadoUltimo= estadoActual1;
                
        if (contador%2 == 0 ) {
              digitalWrite(24, LOW);
        }
        else {
              digitalWrite(24, HIGH);
        }
}

void distancia(){
                        distRecorrida=perimetroRueda*contador;
                        distKM=distRecorrida/1000000;
                        if(distRecorrida<=999999){
                                Serial.print("Distancia recorrida en m= ");
                                Serial.println(distRecorrida);
                        }
                        else{
                                Serial.print("Distancia recorrida en Km= ");
                                Serial.println(distKM);
                        }
                        }

usa esto donde quieras mostrar los digitos pero lo hice para cuatro displays asi que debes ampliarlo si usas los 8

void printNumber(unsigned long v) {
    int unidades;
    int decenas;
    int cientos;
    int miles
    
    boolean negative; 

    unidades  = v%10;
    v         = v/10;
    decenas   = v%10;
    v         = v/10;
    cientos   = v%10;
    v         = v/10;
    miles     = v;
         
    
    //Now print the number digit by digit
    lc.setDigit(0,3,(byte)miles,false);
    lc.setDigit(0,2,(byte)cientos,false);
    lc.setDigit(0,1,(byte)decenas,false);
    lc.setDigit(0,0,(byte)unidades,false);
}

Muchas gracias voy a ir probando ire posteando resultados