Cargar Array que están en una SD

Buenas amigos!!!

Necesito una ayuda ya que actualmente me encuentro bloqueado.

Lo que busco es que en el código que os pongo a continuación, tengo un array, de forma de liberar espacio y así también el poder actualizarlo de forma sencilla los valores del array, necesito que los datos sean cargados desde una tarjeta SD.

La idea es que tenga 2 archivos, uno con los nombre, como si fuera una lista y por otro lado otro archivo con los arrays.

En realidad el código es algo más lago ya que tiene unos botones y un LCD donde aparece la la lista según se pulsa el botón y una vez elegido, se cargue dicho array en el arduino. Toda esta parte (botones, LCD) no lo he puesto para aligerar el código.

Comparto también el archivo.

MUCHAS GRACIAS A TODOS POR LA AYUDA!!!

/*###############################################################################
 Nombre del fichero:                                                    
 Placa:                      Arduino UNO         
 Lenguaje de programación:   Arduino IDE  1.8.9        
     
 Autor:                      Jorge Vázquez Nuño
 Fecha:                      12-Abril-2020

 Conexiones:                 D5= Sal_1
                             D6= Sal_2
                             A2= Potenciómetro RPM
################################################################################*/   

//----- ENTRADAS Y SALIDAS --------------------------
const byte Pin_PontRPM  = A2;                         // Pin de entrada para el potenciómetro RPM
const byte Pin_Sal1     =  3;                         // Pin de salida para la señal_1
const byte Pin_Sal2     =  5;                         // Pin de salida para la señal_2
//----- VARIABLES -----------------------------------
int RPM;                                              // Variable de la señal RPM
int RPManterior;

//----- ARRAY ----------------
const unsigned char Senal[]= {
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,0,0,2,2, 
     3,2,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0,  
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,1,0,1,0, 
     1,0,1,0,1,0,0,0,0,0  
   };

 
//**************************************** Inicio del SETUP ****************************************
void setup() {                                        // SETUP
 Serial.begin(9600);                                 // Configuración la velocidad monitor serie
 pinMode (Pin_Sal1, OUTPUT);                         // Configurar Pin_LCD como salida
 pinMode (Pin_Sal2, OUTPUT);                         // Configurar Pin_LCD como salida

  // Configuración de TIMER1 (generador de patrones)
 noInterrupts();                                     // Detener interrupciones
 TCCR1A = 0;                                         // Establecer todo el registro TCCR1A a 0
 TCCR1B = 0;                                         // Lo mismo para TCCR1B
 TCNT1  = 0;                                         // Inicializar el valor del contador a 0
 OCR1A  = 1000;                                      // Se configura el registro de comparacion para 1 Hz
 TCCR1B |= (1 << WGM12);                             // Activar el modo CTC
 TCCR1B |= (1 << CS12);                              // Establecer bits CS10 para 256 preescaler
 TIMSK1 |= (1 << OCIE1A);                            // Se configura el desbordamiento 
 interrupts();                                       // Permitir interrupciones
}                                                     // Fin del Setup
//**************************************** Fin del SETUP *******************************************

//**************************************** Inicio del LOOP *****************************************
void loop() {                                         // LOOP
int Datos = sizeof(Senal)/sizeof(Senal[0]);           // Determina la longitud de la array
   for (int i = 0; i <= Datos; i++) {                // Se pasan por cada uno de los datos de la array
     switch (Senal[i]){                              // Se analoza el dato del array
       case 0:                                       // SEÑAL:0
         PORTD = 0B00000000;                         // 
         delayMicroseconds(RPM);                     // Pausa
         break;                                      // Salir del SWITCH
       case 1:                                       // SEÑAL:1
         PORTD = 0B0001000;                          // 
         delayMicroseconds(RPM);                     // Pausa
         break;                                      // Salir del SWITCH
        case 2:                                      // SEÑAL:2
         PORTD = 0B000000100;                        // 
         delayMicroseconds(RPM);                     // Pausa
         break;                                      // Salir del SWITCH
       case 3:                                       // SEÑAL:3
         PORTD = 0B000001100;                        // 
         delayMicroseconds(RPM);                     // Pausa
         break;                                      // Salir del SWITCH
     }                                               // Fin del SWITCH
   }                                                 // Fin del bucle FOR
}                                                     // Fin del Loop   
//**************************************** Fin del LOOP ********************************************

ISR(TIMER1_COMPA_vect) {
 RPM = analogRead(Pin_PontRPM);                      // Se asigna a la variable RPM el valor del potenciometro de entrada
 RPM = map(RPM, 1023, 0, 150, 650);                  // 8ms a 80ms de  7500 a 750 rpm;
}

Prueba_Array_Foro.ino (5.32 KB)

Moderador
Por favor @jvazquez en la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear[/b]

Como tu consulta es para otra sección lo muevo a Software.
Edita tu titulo retirando la palabra Ayuda!!! porque el foro es precisamente de Ayuda y es redundante indicarlo en cada título.

También edita el código usando etiquetas.
Nada absolutamente nada se permite postear como simple texto.

Lee las Normas del foro