viernes, 2 de marzo de 2018

Programa de la puerta con sensores


Práctica  Dirigida 2.    Programación de Puerta con Servo Motor y Pantalla LiquidCrystal
#include <LiquidCrystal.h>   // se  agrega  desde  la  librería
#include <Servo.h>           // Se incluye servo motor desde  la  librería
Servo servo1;
 LiquidCrystal lcd(8,9,4,5,6,7);    //pines para comunicar información  a a pantalla
int v=-1;
int puertoservo =3;    //  variable para mandar datos servo
int trig = 13;          // pin designado para entrada
int echo =12; 
 int piezo =2;    // variable  para  el piezo
 int grados; //    variable que captura datos del ángulo en grados
 int tmp=0;    //variable  temporal usada en la condicional
 int pulsominimo=650;     //variable que  define  el ángulo menor
 int pulsomaximo=2550;       // variable que define el àngulo mayor
   int calcularDistancia();
float disCalculada;

void setup()
{
  lcd.setCursor(4,1);   //define la posición 4 en la fila uno de la pantalla
  lcd.print ("PRONIE");  //se muestra  la  palabra  PRONIE en la posiciòn indicada
  lcd.noBlink();  //indicación  a  la lcd para que  no parpadee
  delay (2000);  // espera 2 segundos
  servo1.attach (puertoservo,pulsominimo , pulsomaximo);  //definición del puerto para esos puntos
  //--------------------//
pinMode (trig, OUTPUT);     // pin definido como  elemento  de salida
pinMode (echo, INPUT);     // pin definido  como  elemento  de  entrada
pinMode (piezo,OUTPUT);     // se  define  la  salida en el piezo
 //--------------------//
Serial.begin (9600);       // activación del  monitor  serial
}
void loop()
{
 disCalculada = calcularDistancia ();  // devuelve  el  valor  de  calcularDistabcia
 grados = servo1.read(); //variable que  guarda  el valor  del ángulo de  giro
Serial.print("Grados :");  //mostramos  la  palabra grados
 Serial.println(grados);  // muestra  el valor  del ángulo
delay (200);  // espera  milisegundos
 Serial.println("--------");    // líneas  para  lectura  de  la  información
 Serial.print("cm :");
 Serial.println (disCalculada);    // función  para  mostrar  el  valor  de  la  variable
  delay (200);
  if (disCalculada < 100)     // condicional  Si  calcula el  valor  de  la  distancia  
{
  tmp=90 + 10;   // variable temporal con  valor  asignado
tone (piezo, 600,100);     // debe activar  el  pieso  si cumple  la  funcion
}
else
{
  tmp=0-10;
  }
  delay (10);       // espera 10  milisegundos
  servo1.write (tmp);
  lcd.setCursor(1,1);  //posiciòn en el cursor,fila1,posición 1
  lcd.print ("Distancia");       //
  lcd.println(disCalculada);   //muestra  el valor  de  la  variable
}
   int calcularDistancia(){   // variable  para  calcularDistancia
    long distancia;   
    long duracion;
   digitalWrite (trig, LOW);
   delayMicroseconds  (4);
   digitalWrite (trig,HIGH);
   delayMicroseconds  (10);
   digitalWrite (trig,LOW);
duracion = pulseIn (echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
return distancia;
}




No hay comentarios.:

Publicar un comentario

Problemas en la realización del Reto

Problemas y soluciones: 1.         1.  En   primer   lugar   tuve   complicaciones   para integrar   la   programación   de la   fotoc...