#include <LiquidCrystal.h> // Incluir esta libreria para poder usar el lcd
int Ana1ogica = A0; // Entrada analogica de LM35
LiquidCrystal lcd(12,11,5,4,3,2); // Definimos las salidas de la pantalla LCD
int Temp = 0; // Se inicializa la temperatura en cero
char Grados = '°C'; // Unidad de medida de la temperatura
int triger=7; // Pulso
int echo=8; // Echo recivido
int encendido=10; // Control de encedendido del aire
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
pinMode(13,OUTPUT);
digitalWrite(13, HIGH); //Activamos la retroiluminacion
}
void loop()
{
pinMode(encendido, OUTPUT); // Ponemos el encendido como salida
delayMicroseconds(2);
digitalWrite(encendido, HIGH);
// Medicion de distancia con sensor ultrasonico
long pulso, inches, cm, altura; // Variables de medicion
pinMode(triger, OUTPUT); // Ponemos el triger como salida
digitalWrite(triger, LOW); // Lo inicializamos bajo
delayMicroseconds(2); // Esperamos 2 microsegundos
digitalWrite(triger, HIGH); // Lo activamos
pinMode(echo, INPUT); // Ponemos el echo como entrada
pulso = pulseIn(echo, HIGH); // Medimos el pulso de salida del sensoR
// Calculamos la temperatura
Temp = analogRead(Ana1ogica); // Leemos el valor de la entrada analogica
Temp = Temp * 0.48828125; // Escalamos la señal a grados centigrados
// Convertimos el tiempo en distancia
cm = microsecTocm(pulso);
//altura=49.5-cm;
lcd.clear();
// Mostramos los grados en el serial
Serial.print("Grados: ");
Serial.print(Temp);
//Serial.print(Grados);
Serial.println("°C");
// Mostramos la distancia en el serial
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
// Mostramos los grados en la pantalla LCD
lcd.setCursor(0,0);
lcd.print("Temperatura: ");
lcd.setCursor(12,0);
lcd.print(Temp);
lcd.setCursor(15,0);
lcd.print(Grados);
// Mostramos la distancia en la pantalla lcd
lcd.setCursor(0,1);
lcd.print("Altura: ");
lcd.setCursor(8,1);
lcd.print(cm);
lcd.setCursor(11,1);
lcd.print("cm");
// Lo apagamos si la temperatura sobrepasa los 30 grados
if (Temp >= 30)
{
delayMicroseconds(1000);
digitalWrite(encendido, LOW);
delayMicroseconds(10000);
if(Temp<30)
{
delayMicroseconds(1000);
digitalWrite(encendido, HIGH);
}
}
// Lo apagamos si la altura sobrepara los limites menor o mayor
if(cm <= 6.5 || cm >=21)
{
lcd.clear();
delayMicroseconds(2);
digitalWrite(encendido, LOW);
lcd.setCursor(0,0);
lcd.print("Sistema apagado.");
lcd.setCursor(0,1);
lcd.print(" Reiniciando...");
}
delay(1000);
}
// Por ultimo las funciones que convierten el tiempo en distancia
long microsecToin(long microsec)
{ return microsec / 74 / 2; }
long microsecTocm(long microsec)
{ return microsec / 29 / 2; }
No hay comentarios:
Publicar un comentario