Ayuda con programa de PIROMETRO!

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

Este es la primera parte del pseudocodigo:

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

Hasta ahi es mi duda…se que los pasos 2, 3 y 4 van en VOID SETUP, pero no se si va tambien ahi o

en VOID LOOP el codigo para que la pantalla de “bienvenido” desaparezca luego de 4seg, lo mismo

para que se apague el buzzer luego de 1seg, se me limpie la pantalla de “bienvenido” y comienze la

lectura de la memoria EEPROM.

Les dejo el codigo que hasta ahora hice:

#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);
// se mapea 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);
pinMode(ledAzul, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(transistor1, OUTPUT);
pinMode(transistor2, OUTPUT);

digitalWrite(backlight, HIGH);
lcd.begin(20,4);
lcd.setCursor(3,1);
lcd.print("BIENVENIDO/A A");
lcd.setCursor(1,2);
lcd.print("TECMATEMP LCDMR 35");
digitalWrite(buzzer, HIGH);
digitalWrite(ledAzul, LOW);
digitalWrite(ledVerde, LOW);
digitalWrite(ledRojo, LOW);
digitalWrite(transistor1, LOW);
digitalWrite(transistor2, LOW);
}

void loop() {


}

Piensa siempre en que el código que hay dentro del setup, es el que se ejecuta al principio, antes del loop y [u]solamente una vez[/u]. El código que va en el loop, [u]es el que se va repitiendo[/u].

Así pues, todo lo que quieras que se haga una sola vez al principio, mételo en el setup.

También hay maneras de hacer que se ejecuten cosas solo una vez desde el loop, pero ocupa más espacio en memoria, por llevar más código.

Gracias che, sabes que lo sospechaba pero necesitaba que me lo confirme un capo como vos!.

Tengo otra duda, y sino es mucha molestia indicame porfa. Aclaro que hay 2 valores limites, max y min de

temperaturas los cuales ingreso a traves de 2 botones del teclado.

Siguiendo con el pseudocodigo:

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 pos

teriormente 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 entiendas,

Gracias.

Efectivamente, los pasos 6 y 7 deberían ir en el loop, ya que, aunque parece que solo los vayas a usar al principio, quieres que sean modificables en cualquier momento, cosa que hace necesario volver aleer los valores modificados.

LISTO GRACIAS, TE AGREGO UN KARMA CAPO!

Un pirómetro, dispositivo capaz de medir la temperatura de una sustancia sin necesidad de estar en contacto con ella. El término se suele aplicar a aquellos instrumentos capaces de medir temperaturas superiores a los 600 grados celsius. El rango de temperatura de un pirómetro se encuentra entre -50 grados celsius hasta +4000 grados celsius. Una aplicación típica es la medida de la temperatura de metales incandescentes en molinos de acero o fundiciones.

O sea que lo que pretendes hacer no es un pirómetro si tu elemento sensor es un LM35, sino un medidor de temperatura. Aclarado esto veo que el resto te lo solucionó carmeloco asi que cualqueir cosa.

Igualmente a tu programa le falta trabajo. No veo que leas la temperatura del sensor aún y te faltan varias pasos para desarrollar.

NOTA: IRRA te he enviado un privado pero ya que tus ultimos 5 post estan escritos en mayúsculas ya es reiterada tu falta de adhesión a las normas. Por favor, data una vuelta por las mismas a ver si comprendes que mas alla de no darte cuenta (que no es excusa) no debes usar mayúsculas salvo para enfatizar algo puntual.

Si che, me falta la re banda para tarminar...pasa que trabajo y estudio son dificiles de coordinar!

Pero mas alla de eso, ten en cuenta que no es un pirómetro. Un pirómetro usa por ejemplo un sensor laser para medir a distancia la temperatura como te puse. Ten cuidado!! No sea cosa que te pidan un pirómetro y tu entregues un termómetro. No son la misma cosa.

Listo gracias, pasa que yo habia leido en un lugar que servia para temperaturas elevadas de cero unicamente...cualquier cosa lei.

en internet se publican muchas pavadas, lo que cuenta es lo que uno sabe y puedo verificar. Si el sensor es un LM35 buscas la hoja de datos y veras que no va mas alla de 150 grados celcius y es por contacto o podra medir la radiación que no es lo mismo.