Buscar este blog

domingo, 8 de marzo de 2015

Control de atura de un objeto usando sensor ultrasonico, lm35 y secadora de pelo en ARDUINO

#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