Prueba para corregir el codigo

#include <EEPROM.h>

const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;

int An, An0, X=0, Y=0, Y1, Pr = 0, Cont0 = 0, SL = 0; 

//define los caracteres de la matriz
char teclas [4] [4] =          {{'1', '2', '3','A'},
                                        {'4', '5', '6','B'},
										{'7', '8', '9','C'},
										{'*','0', '#', 'D'}};	
					   
char letras [4] = {'E', 'F', 'G', 'H'};		   

int cont, cont1;

//define los pines

int filas [ ] = {2,3,4,5};
int columnas [ ] = {6,7,8,9};
int botones [ ] = {10,11};

char valor; 		   //variable que guarda el valor
int direccion = 5;  //variable que indicara la posición de las celdas
int celda; 			   //variable que se utiliza en el caso de que se utiliza el boton de LEER

void setup(){
Serial.begin(9600);

//Define el estado de los pines
EEPROM.Put(0,direccion);
 for (cont=0 ; cont<=3 ; cont++){
      pinMode(filas[cont ],OUTPUT);}
  
 for (cont=0 ; cont<=3 ; cont++){
      pinMode(columnas[ cont ],INPUT_PULLUP);}
 
 for(cont=0; cont<=3; cont++){
     pinMode(botones[cont], INPUT_PULLUP);}
     
 }

 
//Arreglo que lee las teclas

void lectura () {
   for (cont=0; cont<4; cont++){	
	digitalWrite (filas [cont], LOW);
	for (cont1=0; cont1<4; cont1++){
	    if (digitalRead (columnas[cont1])== LOW){
	       delay(50);
		if (digitalRead (columnas[cont1])== LOW){											  
		  Serial.println(teclas[cont][cont1]); //muestra el caracter correspondiente
		  valor = teclas ([cont][cont1]); 	       //guardamos el valor en la variable value
		  EEPROM.Write(direccion,valor);
		  direccion = direccion + 1; // Incrementa la direccion una unidad 
		  while(digitalRead (columnas[cont1]) == LOW){}		      
																	 }}
									              }
		     digitalWrite (filas[cont], HIGH);												    
											 }
}

//Areglo que lee los botones (reset y volver a mostrar)

void lectura2 (){
   for (cont = 0; cont<2; cont++){	    
	if (digitalRead (botones[cont]) == LOW){
		delay(50); //evitamos el rebote
	   if (digitalRead (botones[cont]) == LOW){ //en el caso de que se cumpla.
	       if (cont == 0){ direccion = 5; Serial.println ("La dirección volvio a ser 0");}
			else { 
					for (celda = 0 ; celda < direccion; celda ++){
					Serial.println (EEPROM.Read(celda);}		
					}
		   while(digitalRead (botones[cont]) == LOW) {} //evitar rebote
																 }
																}
											  }
	              		
void loop (){
lectura();
lectura2 ();
}

Moderador:
Hola @pedrorosito. El código bien subido, el título es correcto pero no dices que hay que hacer o que no funciona.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.