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)