Uso de memoria EEPROM.

Hola, quiero hacer un pirometro para mi trabajo con un teclado matricial, un LCD, unos reles y por supuesto el LM35.

Con el teclado defino valores max y min de temperatura que se guardan en la memoria EEPROM y junto a la temperatura actual se mustran en un LCD sensadas estas temperaturas por el LM35 y al llegar a esos valores limites me active y desactive 2 reles con transistores.

Como no soy muy canchero primero hice el pseudocodigo. Les muestro la primera parte:

1-Encendido de Pirometro
2-Encender backlight del LCD
3-Mostrar pantalla de “bienvenido” por 4 seg.
4-Hacer pitar buzzer por 1seg
5-Limpiar pantalla del LCD luego del paso 3
6-Leer la memoria EEPROM los valores max y min
7-La memoria EEPROM esta vacia? (aca iria un IF obvio)
Si esta vacia mostrar en pantalla de LCD “Sin valores limites”
Si no lo esta mostrar valores max y min de temperaturas en otra pantalla y encender led verde.
8-Esperar 10seg y luego apagar el backlight del LCD

Mis preguntas son:

-La lectura de la memoria EEPROM (paso 6)…donde irian colocados los valores max y min…si de acuerdo a estos el ARDUINO me activa unos reles durante todo el programa…iria colocada dicha lectura en el VOID LOOP no es asi?

-Y en el paso 7…si voy a utilizar esos valores continuamente y mostrarlos en otra pantalla…tambien va este paso en el VOID LOOP? Este ultimo paso seria mas que nada para el primer encendido…ya que posteriormente sus valores se guardarian y siempre estaria llena la memoria EEPROM por lo que solo se mostrarian esos valores en otra pantalla como explique hace un rato con la temperatura actual. (Tmin, Tactual y Tmax).

Yo voy a “leer” los datos de las posiciones de la memoria EEPROM cuando el Pirometro este en funcionamiento para saber cuando activar unos reles de acuerdo a los valores max y min…

Y voy a “escribir” datos en esas posiciones cuando con el teclado quiera cambiar dichos valores limites.

No se si me explique bien…ojala entiendan.

Y no me respondan con esa teoria del VOID SETUP Y DEL VOID LOOP que ya la se, sino no haria esta pregunta mas compleja.

Les dejo el codigo:

#include <EEPROM.h>          //Se habilita la libreria de la memoria EEPROM
#include <Keypad.h>          //Se habilita la libreria del teclado matricial de 4x4
#include <LiquidCrystal.h>   //Se habilita la libreria del LCD 20x4


// Configuración para el LCD

// Puertos LCD -> RS  E   D4  D5  D6  D7
LiquidCrystal lcd(32, 33, 34, 35, 36, 37);


// Configuracion para Teclado Matricial

const byte filas = 4;                              //numero de filas
const byte columnas = 4;                           //numero de columnas
byte pinsFilas[filas] = {22, 23, 24, 25};          //orden de conexion: Fila 1, Fila 2, Fila 3 y Fila 4
byte pinsColumnas[columnas] = {26, 27, 28, 29};    //orden de conexion: Columna 1, Columna 2, Columna 3 y Columna 4

char teclas[filas][columnas] = {                   //matriz para orden de teclas-caracteres
{'7','8','9','A'},
{'4','5','6','B'},  
{'1','2','3','C'},
{'0','F','E','D'}
};

Keypad keypad = Keypad(makeKeymap(teclas), pinsFilas, pinsColumnas, filas, columnas);
// mapeo de la cantidad de filas y columnas y los pines donde estan conectados


// Variables para cuentas y resultados

char numero;     //Declaración de variables
int  valorA;     //Declaración de variables
int  valorB;     //Declaración de variables
int  valorC;     //Declaración de variables

int contador;    //Declaración de variables
int contador2=0;
int contador3;

int decenaA;     //Declaración de variables
int decenaB;     //Declaración de variables
int decenaC;     //Declaración de variables
int unidadA;     //Declaración de variables
int unidadB;     //Declaración de variables
int unidadC;     //Declaración de variables

int cicloA;      //Declaración de variables
int cicloB;      //Declaración de variables
int cicloC;      //Declaración de variables

int reset;


// Configuracion de pines de entrada y salida

const int sensor = 0;       // pin analogico de entrada A0 sensor LM35
const int backlight = 38;   // pin digital LED del LCD
const int ledAzul = 42;     // pin digital LED azul
const int ledVerde = 43;    // pin digital LED verde
const int ledRojo = 44;     // pin digital LED rojo
const int buzzer = 45;      // pin digital buzzer
const int transistor1 = 52; // pin digital transistor 1 para apagar y encender calor
const int transistor2 = 53; // pin digital transistor 2 para encender y apagar frio


void setup() {
pinMode(backlight, OUTPUT);  // pines configurados como salidas
pinMode(ledAzul, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(transistor1, OUTPUT);
pinMode(transistor2, OUTPUT);

digitalWrite(ledAzul, LOW);     //comenzar con los 3 leds apagados
digitalWrite(ledVerde, LOW);
digitalWrite(ledRojo, LOW);
digitalWrite(transistor1, LOW); //comenzar con los 2 transistores apagados
digitalWrite(transistor2, LOW);
digitalWrite(backlight, HIGH);  //encender backlight
lcd.begin(20,4);                //inicio de uso de LCD de 20x4
lcd.setCursor(3,1);             //posicionar cursor en columna 3 y fila 1
lcd.print("BIENVENIDO/A A");    //escribir texto en LCD
lcd.setCursor(1,2);             //posicionar cursor en columna 1 y fila 2
lcd.print("TECMATEMP LCDMR 35");//escibir texto en LCD
digitalWrite(buzzer, HIGH);     //encender buzzer
delay(1000);                    //esperar encendido 1 seg
digitalWrite(buzzer, LOW);      //apagar buzzer
delay(3000);                    //esperar 3 seg
lcd.clear();                    //se limpia pantalla del LCD luego de esos 3 seg
}

void loop() {


}

Gracias.

IRRA, por favor, no repitas post con el mismo tema. Va en contra de las normas de uso del foro, e incluvo va en tu contra, porque se desvían las respuestas a dos post.

LISTO, PERDON YA ENTENDI, COMO VOS ERAS EL UNICO QUE ME RESPONDIO VISTE. GRACIAS.