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