Se presenta el video que corresponde a la Práctica Dirigida 2, que consiste diseñar un sistema que permite a las puertas automáticas abrirse cuando detectan una persona en la
entrada o salida de un local. Se utilizará lo siguiente.
1. Sensor ultrasónico.
2. Piezo o parlante.
3. Servo Motor.
4. Pantalla LCD.
Durante la Práctica se va a entender como se conecta toda la circuitería y luego se realiza en la programación que simula las puertas automáticas que se abren cuando detectan a una persona.
Código para la programación
//Parlante
//Servomotor
//LCD
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo1; //contructor de la sentencia servo
LiquidCrystal lcd(8,9,4,5,6,7); // Definimos los pines en la tarjeta Arduino que controlan la LCD
int v=-1;
int puertoservo = 3; // Variable para mandar datos al servo
int trig = 13; // TRIGGER en el pin 13
int echo = 12; // ECHO en el pin 12
int piezo = 2; // Parlante del pin 2
int grados; //Variable para guardar los grados del ángulo del servo
int tmp=0; //Variable temporal para usar en la condicional
int pulsominimo=650; //Variable que define el ángulo menor del servo
int pulsomaximo=2550; // Variable que define el ángulo mayor del servo
float disCalculada; // Variable que guarda el valor de dicha distancia
void setup() {
lcd.setCursor(4,1); //Definimos ques e ubique en la posición 4 de la fila uno en la pantalla
lcd.print("PRONIE"); //Mostramos la palabra PRONIE en la posición anterior
lcd.noBlink(); //Le indicacmos al LCD que no parpadee
delay(2000); //esperamos 2 segundos
//Indicamos al servo motor, cual pin nos va a comunicar y cual es el angulo menor y mayor
servo1.attach (puertoservo,pulsominimo,pulsomaximo);
//----------------//
pinMode(trig,OUTPUT); //Inicializamos el TRIGGER como pin de salida
pinMode(echo,INPUT); //Inicializamos el ECHO como pin de ENTRADA
pinMode(piezo,OUTPUT); //Inicializamos el piezo modo de salida
//----------------//
Serial.begin(9600);
}
void loop()
{
disCalculada = calcularDistancia();
grados=servo1.read(); //Guardamos en la variable grados el valor del angulo de giro del servo
Serial.println("-----------"); //cambio de línea
Serial.print("cm:");
Serial.println(disCalculada);
delay(200);
if (disCalculada < 100) //condicional SI
{
tmp=100;//a la variable temporal le asignamos un valor de 50
tone(piezo, 600,199); // se activa el parlante si se cumple la condicion
}
else
{
tmp=0; // si la condicion no se cumple, cambiamos el valor de la variable temporal a 0
}
delay (10); //eVIsperamos 10 milisegundos
servo1.write (tmp); //ahora vamos a girar los grados que esten guardados en la variable temporal
lcd.setCursor(1,1); //Posicionamos el curso en la fila 1, posición 1
lcd.print("Distancia: "); //Mostramos la palabra distancia
lcd.println(disCalculada); //Mostranos el valor de la variable
}
int calcularDistancia()
{
long distancia; //Calculo de la distancia basado en el principio que indica
long duracion; // que el sonido recorre 343 mts x segundo luego de esto
digitalWrite (trig, LOW); // se convierte a un 1 centímetro por microsegundos, luego
delayMicroseconds (4); // se aplica la regla de tres entre distancia y duración y se
digitalWrite (trig, HIGH); // obtinen que para la distancia necesitamos dividir duración
delayMicroseconds (10); // entre 29
digitalWrite (trig, LOW);
duracion=pulseIn (echo, HIGH);
duracion=duracion/2;
distancia=duracion/29;
return distancia;
}
VIDEO







0 comentarios:
Publicar un comentario