lunes, 12 de febrero de 2018

Práctica Dirigida 2



Vídeo práctica dirigida 2


Indicaciones 
Desarrollar la Práctica dirigida 2: "Puerta automática"  para ello es necesario:
· Ejecutar la primera parte de la práctica, mediante el vídeo Puerta automática - sensor ultrasónico
· Programar el sonido de la puerta, tomando en cuenta lo expuesto en el vídeo Puerta automática - piezo
· Agregar el motor a la puerta automática, mediante el contenido mostrado en el vídeo Puerta automática - servomotor
· Construir el prototipo con el Arduino UNO, siguiendo la ayuda del Vídeo Puerta automática - LCD

Síntesis de la Programación
Práctica dirigida 2 

#include <LiquidCrystal.h>  // librería de la pantalla LCD
#include <Servo.h>  // librería del servo motor
Servo servo1;    // es la variable para mandar datos al servo
LiquidCrystal lcd(8,9,4,5,6,7);  //conexión de los pines de la LCD a la tarjeta Arduino
int v=-1;
int puertoservo =3;   // conexión del servo motor
int trig = 13;        // variables de envía y recibe ondas
int echo = 12;     // recibe las ondas que revotan en el objeto.
int piezo = 2;         // variable del pin piezo
int pulsominimo =650;   // define el ángulo mínimo  para que trabaje el servomotor
int pulsomaximo=2550;  // define el ángulo máximo  para que trabaje el servomotor
int tmp=0;    // variable temporal que almacena los ángulos del servo motor.
int grados;  // guarda los grados de giro de ángulo del servomotor
float disCalculada;       // variable disCalculada guarda el valor de dicha distancia, se usa para decimales.
void setup()
{
lcd.setCursor(4,1);       // definimos que se ubique en la posición  4 de la fila 1 de la pantalla
lcd.print("PRONIE");
lcd.noBlink();  // para que el LCD no parpadee
delay(2000);
//-------------------//
servo1.attach (puertoservo, pulsominimo, pulsomaximo);
//-------------------//
pinMode (trig, OUTPUT);
 pinMode (echo, INPUT);
 pinMode (piezo, OUTPUT);  //Establecemos el piezo en modo salida.
//-------------------//
 Serial.begin (9600);
}
void loop()
{
disCalculada = calcularDistancia ();
grados =servo1.read();
Serial.print ("Grados :");
Serial.println (grados);
delay (200);
Serial.println ("--------");  // línea que divide la lectura.
Serial.print ("cm :");  // salto  al siguiente renglón  las palabras aparecen en la misma línea.
Serial.println (disCalculada);
  delay (200);
  if (disCalculada) < 100)   // Condicional si disCalculada es menor que 100.
{
tmp=100;     //
tone (piezo, 600,100);   // se activa el piezo si se cumple la condición.
}
else
{
tmp=0;
}
delay (10);                           // esperaremos 10 milisegundos
servo1.write(tmp);
lcd.setCursor(1,1);     // direccionamos el cursor en la fila1, posición1.
lcd.print("Distancia");      // indica la distancia calculada en la LCD
lcd.println(disCalculada);  // imprime en la pantalla el valor de la variable.

}
int calcularDistancia ()
{
long distancia;          //calcula la distancia basada en el principio que el sonido recorre 343 metros por segundos.
long duración;              
digitalWrite (trig, LOW);    
delayMicroseconds (4);       // La espera se convierte a un 1 centímetro por microsegundos.
 digitalWrite (trig, HIGH);  
 delayMicroseconds (10);     
 digitalWrite (trig, LOW);    
 duracion = pulseIn (echo, HIGH);
 duracion = duracion/2;
 distancia = distancia/29;    //Para obtener la distancia necesitamos dividirla entre 29.
 return distancia;   //valor de retorno de la función.
 } 



 Vídeo Reto 2


Puertas automáticas el cual consiste en agregar una nueva melodía y un led que se encienda al detectar el movimiento y apague.
Síntesis de la Programación
Reto 2 

#include "pitches.h"      // librería de tonos o melodías
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo1;
LiquidCrystal lcd(8,9,4,5,6,7);
int v=-1;
int puertoservo = 3;
int grados;
int tmp =0;
int pulsominimo=650;
int pulsomaximo=2550;
int trig = 13;
int echo = 12;
float disCalculada;
int piezo = 2;
int melody[] = {               // Variable melodía con las notas a utilizar.
 NOTE_C4, NOTE_F2, NOTE_G3, NOTE_A3, NOTE_E2, 0, NOTE_B3, NOTE_C4 };
 int noteDurations[] = { 4, 8, 8, 4, 4, 4, 4, 4 }; // variable duración de las notas o tiempo.
 int pinAzul = 11;

void setup()
{
 lcd.setCursor(4,1);
 lcd.print ("PRONIE");
 lcd.noBlink();
 delay (2000);
servo1.attach (puertoservo,pulsominimo, pulsomaximo);
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode(pinAzul, OUTPUT); 
Serial.begin(9600);
}

void loop()
{
disCalculada = calcularDistancia ();
grados=servo1.read();
Serial.print("Grados :");
Serial.println (grados);
delay(200);
Serial.println("--------");
Serial.print("cm :");
Serial.println (disCalculada);
delay(200);
if (disCalculada < 100)
{
tmp=100;
digitalWrite(pinAzul, HIGH);
 // tone (piezo, 2600, 300);
for (int thisNote = 0; thisNote < 8; thisNote++) {    //Variable para esta nota 
int noteDuration = 1000 / noteDurations[thisNote];   //Tiempo de las notas
tone(piezo, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;   //Pausas de las notas
  delay(pauseBetweenNotes);
  noTone(8);
  }
}
else
{
tmp=0;
digitalWrite(pinAzul, LOW);
}
delay (10);
servo1.write (tmp);
lcd.setCursor(1,1);
lcd.print("Distancia ");
lcd.println(disCalculada);
}
int 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

Proyecto Final

Plantilla Inspiración Plantilla Implementación Proyecto final Prototipo que mide el nivel de temperatura en ...