PRACTICA DIRIGIDA2

UNIDAD 3
Ejercicio1 programando el sensor ultrasonico





Incorporando el piezo al prototipo




Programación de sensor ultrasonico y el piezo
int trig=13;
int echo=12;                                             ///VARIABLE
int piezo=2;
float discalculada;

void setup() 
{
pinMode(trig, OUTPUT);             //ENTRADA O SALIDA DE PINES.
pinMode(echo, INPUT);
pinMode(piezo, OUTPUT);
Serial.begin(9600);  

}

void loop() 
{
  discalculada= calcularDistancia();  //VARIABLE Y FUNCION
  Serial.println("---------");
  Serial.print("cm  :");
  Serial.println(discalculada);
  delay(200);
  if (discalculada  <100)
  {
   tone (piezo,  600, 100);
  }
  else
  {
  }
  
}

int calcularDistancia() //En esta función se hace el calculo de la distancia  de acuerdo a los valores que  
{                                    //indica el S.Ultrasónico.
  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;
}

PROGRAMANDO EL SERVOMOTOR




#include <Servo.h>
Servo servo1;
int puertoservo =3;


int trig=13;
int echo=12;                                             ///VARIABLE
int piezo=2;
int grados;
int tmp=0;
int pulsominimo=650;
int pulsomaximo=2550;
float discalculada;

void setup()
{

servo1.attach (puertoservo,pulsominimo, pulsomaximo);

pinMode(trig, OUTPUT);             //ENTRADA O SALIDA DE PINES.
pinMode(echo, INPUT);
pinMode(piezo, OUTPUT);
Serial.begin(9600);

}

void loop()
{
  discalculada= calcularDistancia();  //VARIABLE Y FUNCION
  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;
   tone (piezo,  600, 100);
  }
  else
  {
    tmp=0;
  }
  delay (10);
  servo1.write (tmp);
}

int calcularDistancia() //En esta función se hace el calculo de la distancia  de acuerdo a los valores que
{                                    //indica el S.Ultrasónico.
  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;
}


  PROGRAMANDO LA PANTALLA LCD






CODIGOS
#include <LiquidCrystal.h>

#include <Servo.h>
Servo servo1; 
LiquidCrystal lcd(8,9,4,5,6,7);
int v=1;
int puertoservo =3;  
int trig = 13;
int echo = 12;
int piezo = 2;
int grados;
int tmp=0;
int pulsominimo=650;
int pulsomaximo=2550;
float disCalculada;

 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); 
  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;
    tone (piezo, 600, 100);
  }
  else
  {
    tmp=0-10;
  }
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;
 }


RETO2  MELODIA

CODIGOS DE PROGRAMACION
#include <pitches.h>

#include <LiquidCrystal.h>

#include <Servo.h>
Servo servo1; 
LiquidCrystal lcd(8,9,4,5,6,7);
int v=1;
int puertoservo =3;  
int trig = 13;
int echo = 12;
int piezo = 2;
int grados;
int tmp=0;
int pulsominimo=650;
int pulsomaximo=2550;
float disCalculada;
int PinAzul = 10;



 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;
    
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,659.26,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,659.26,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,880,2000);
        delay (200);
        tone (piezo,783.99,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);
        tone (piezo,698.46,2000);
        delay (200);

        digitalWrite(PinAzul, HIGH);   // poner el Pin en HIGH
        delay(100);                   
   }

  else
  
  {
    tmp=0-10;
     digitalWrite(PinAzul, LOW);    // poner el Pin en LOW
  delay(100);                   
  }
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;
 }

ENLACE

https://youtu.be/wQlUnXhH26E

Problemas Técnicos

Ha sido todo un desafío, dentro de las limitaciones es que es muy corto tiempo para ejecutar todas las actividades ejemplo esta unidad contaba con 4 practicas y el reto, dentro de los inconvenientes, baja velocidad de internet, en dos ocasiones algunos cables estaban aparentemente quemados porque luego de un cambio funcionó.





Comentarios