viernes, 9 de marzo de 2018

Programa del Proyecto Final


Procedimiento   para  puerta  con fotocelda  y servoMotor
#include <Servo.h>
Servo servo1;
 int puertoservo =3;    //  variable para mandar datos servo
 int trig = 13;
 int echo =12; 
 int piezo =2;    // variable  para  el piezo
 int ledPin_1 = 7; //  declaraciòn del  led en pin  7
 int ldrPin = A0;
 int tonos [] = {298, 396, 496, 380, 496, 0, 597, 492};
 int grados; //    variable que captura datos de los grados
 int tmp=0;    //variable  temporal usada en la condicional
 int pulsominimo=650;
 int pulsomaximo=2550;
 int ldrValor = 0;      // senunciado de fotocelda
 int calcularDistancia();
 float disCalculada;
void setup() {
   servo1.attach (puertoservo,pulsominimo , pulsomaximo);
    //--------------------//
   pinMode (trig, OUTPUT);
   pinMode (echo, INPUT);
   pinMode (piezo,OUTPUT);     // se  define  la  salida en el piezo
 //--------------------//
   pinMode(ledPin_1, OUTPUT);    // salida  para  el  led
   pinMode (ldrPin, INPUT);    // entrada para  la  fotocelda
   Serial.begin (9600);
}

void loop() {
 fotocelda();      // se  enuncia  la  fotocelda  que  actuarà  como  sensor
 disCalculada = calcularDistancia ();
 grados = servo1.read();
 Serial.print("Grados :");
 Serial.println(grados);
 Serial.print("Fotocelda :");
 Serial.println (ldrValor);
 delay (200);
 Serial.println("--------");
 Serial.print("cm :");
 Serial.println (disCalculada);
  delay (200);
  if (disCalculada < 20)     // condicional  Si
{
  tmp=100;   // variable temporal con  valor  asignado
  for (int x = 0; x < 8 ; x++)
  {
    tone (piezo,tonos [x]);
    delay (100);// debe activar  el  piezo  si cumple  la  funcion
}
}
else
{
  noTone (piezo);
  tmp=0-10;
  }
  delay (10);       // espera 10  milisegundos
  servo1.write (tmp);
}

   int calcularDistancia(){      // procedimiento 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;
}

int fotocelda(){
ldrValor = analogRead (ldrPin);  
  if (ldrValor < 20) {
     digitalWrite (ledPin_1, HIGH);   // enciende  el led si el umbral de oscuridad baja
  }else{
     digitalWrite (ledPin_1, LOW);   // apaga el  led  si hay  luz
       }
   delay (200);
   return ldrValor;
  }


No hay comentarios.:

Publicar un comentario

Problemas en la realización del Reto

Problemas y soluciones: 1.         1.  En   primer   lugar   tuve   complicaciones   para integrar   la   programación   de la   fotoc...