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.