Buenas noches a todos. Hace poco comencé a utilizar la IDE de Arduino, y he querido hacer un programa específico utilizando punteros para añadir números indefinidamente a un puntero especifico.
Los componentes que utilizo son un Keypad 4x4, una LCD 20x4 y una tarjeta Arduino Virtual, (todo esto corrido en una simulación en el programa PROTEUS), cuando intento usar "enum variable { };" para ordenar las variables de los botones del Keypad, aparece el error: ADG does not name a type (ADG es el nombre de una de las variable que funge como pulsación y este error me aparece con las otras 2 variables). Llevo horas intentado arreglar esto y ya me he vuelto loco, necesito de su ayuda
![]()
#include <Keypad.h>
#include <LiquidCrystal.h>
const int rs = 10, en = 11, d4 = 12, d5 = 13, d6 = 14, d7 = 15;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
const byte Filas = 4;
const byte Columnas = 4;
byte pines_filas[] = {9,8,7,6};
byte pines_columnas[] = {5,4,3,2};
char teclas [Filas][Columnas] =
{
{'7','8','9','/'},
{'4','5','6','x'},
{'1','2','3','-'},
{'C','0','=','+'}
};
Keypad teclado1 = Keypad(makeKeymap(teclas),pines_filas,pines_columnas,4,4);
enum etapas {ingreso, agregacion, liberar};
enum etapas etapa;
enum pulso {ADG, BEH, CFI};
ADG = teclado1.getKey();
BEH = teclado1.getKey();
CFI = teclado2.getKey();
enum pulso acto;
void *a = NULL;
void *b = NULL;
char *c = NULL;
int s = 0;
int i = 1;
void guarda(int i, char ADG, char *c){
lcd.setCursor(0,2);
lcd.print("Dato ");
lcd.print(i);
lcd.print(" = ");
for(int m = 0; m < i; m++){
c[m] = ADG;
lcd.print(c[m]);
}
lcd.setCursor(0,3);
lcd.print("Guardado");
delay(1000);
lcd.clear();
}
void agrega(int i, char *c){
i = i+1;
b = realloc(c, i*sizeof(char));
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ingresa un numero:");
acto = CFI;
if(CFI != 0){
lcd.setCursor(0,2);
lcd.print("Dato ");
lcd.print(i);
lcd.print(" = ");
for(int n = i-1; n < i; n++){
c[n] = CFI;
lcd.print(c[n]);
}
lcd.setCursor(0,3);
lcd.print("Guardado");
delay(1000);
lcd.clear();
}
}
void libera(char *c, void *a, void *b, int i){
lcd.setCursor(0,0);
lcd.print("Sus datos son estos:");
lcd.setCursor(0,1);
for(int j = 0; j < i; j++){
lcd.print(j+1);
lcd.print(". ");
lcd.print(c[j]);
lcd.print(" ");
}
free(a);
free(b);
free(c);
}
void setup(){
lcd.begin(20,4);
lcd.setCursor(2,0);
lcd.print("Porfavor ingresa");
lcd.setCursor(5,1);
lcd.print("un numero:");
lcd.setCursor(3,3);
etapa = ingreso;
acto = ADG;
}
void loop() {
switch(etapa) {
case ingreso:
if(ADG != 0){
guarda(i, ADG, c);
}
etapa = agregacion;
break;
case agregacion:
lcd.setCursor(0,0);
lcd.print("Ingresar mas datos?");
lcd.setCursor(3,2);
lcd.print("Si = 9 No = 0");
acto = BEH;
if(BEH == '9'){
agrega(i, c);
}
if(BEH == '0'){
etapa = liberar;
}
break;
case liberar:
libera(c, a, b, i);
exit(0);
break;
}
}