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;
}