Práctica Dirigida 2

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 
//sensor ultrasonico
//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