Paso 10: código
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include "pitches.h"
/ * El siguiente programa comprueba con un sensor de distancia HC-SR04 si hay
un objeto entre 2m y 25cm. Si hay un objeto entre 2m y 1 y medio
metros los dos leds verdes cambia de baja a alta. Si hay un objeto
entre 1, 50m y 50cm el verde y el amarillo LDS va alto. Si hay
un objeto entre 50cm y 25cm todos los leds va alto. Y finalmente si
hay un objeto cercano a 25cm que todos los leds parpadean.
Circuito: un HC-SR04 Sensor
dos LED verdes, dos amarillo LED, dos LED rojo con una resistencia de 220Ω a
cada uno de ellos
un zumbador con un resistor
cables!!!!!! */
gren int = 2;
int verde = 3;
int amarillo = 4;
int yellow1 = 5;
int rojo = 8;
int red1 = 9;
int trig = 7; //triger pin del sensor de
int eco = 6; //echo pin del sensor de
int maximumrange = 200; //the gama máxima que el sensor para medir
int minimumrange = 25; gama de //minimum que el sensor para medir
int redRange = 50;
int yellowRange = 150;
int altavoz = 10;
melodía de int [] = {}
NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, 0};
int noteDurations [] = {}
1,2,4,8,64};
larga duración, distancia;
void setup() {}
Serial.Begin(9600);
pinMode(echo,INPUT);
pinMode(trig,OUTPUT);
pinMode(green,OUTPUT);
pinMode(gren,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(yellow1,OUTPUT);
pinMode(red,OUTPUT);
pinMode(red1,OUTPUT);
pinMode(speaker,OUTPUT);
}
void loop() {}
Nos envían la señal desde el pin de trigueros y tomando la señal con la
pin de eco
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
Duration=pulseIn(ECHO,High);
calculamos la distancia
distancia = duración/58.2;
Si (distancia < = minimumrange) {//minimum=25cm
limitPage();
}
else if (distancia < = redRange & & distancia > = minimumrange) {}
redLimit (); //red=50 mínimo = 25
}
/ * Si la distancia es menor o igual a 1.50 m y mayor o igual a 25cm
hacer el fowlloings * /
else if (distancia < = yellowRange & & distancia > = redRange) {}
yellowLimit (); //yellow=150cm rojo = 50 cm
}
else if (distancia < = maximumrange & & distancia > = yellowRange) {}
greenLimit();
}
otra cosa if(distance > maximumrange) {}
Melody [4];
noteDurations [4];
}
}
void limitPage() {//limit= 25cm de un objeto
Serial.println();
Serial.Print ("atención!!!!!! Es: ");
Serial.Print(Distance);
Serial.Print ("cm cerca de un objeto");
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(yellow1,HIGH);
digitalWrite(red,HIGH);
digitalWrite(red1,HIGH);
Delay(20);
digitalWrite(green,LOW);
digitalWrite(gren,LOW);
digitalWrite(yellow,LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red,LOW);
digitalWrite(red1,LOW);
para calcular la duración de la nota, tomar un segundo
dividido por el tipo de nota.
por ejemplo, trimestre Nota = 1000 / 4, corchea = 1000/8, etc..
int noteDuration = 1000/noteDurations [3];
tono (altavoz, melody[3],noteDuration);
para distinguir las notas, establecer un tiempo mínimo entre ellos.
duración + 30% de la nota parece que funciona bien:
int pauseBetweenNotes = noteDuration * 1.30;
Delay(pauseBetweenNotes);
detener la reproducción de tono:
noTone(speaker);
}
void redLimit() {}
Serial.println();
Serial.Print ("tenga cuidado!!!! Es: ");
Serial.Print(Distance);
Serial.Print ("cm cerca de un objeto");
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(yellow1,HIGH);
digitalWrite(red,HIGH);
digitalWrite(red1,HIGH);
para calcular la duración de la nota, tomar un segundo
dividido por el tipo de nota.
por ejemplo, trimestre Nota = 1000 / 4, corchea = 1000/8, etc..
int noteDuration = 1000/noteDurations [2];
tono (altavoz, melody[2],noteDuration);
para distinguir las notas, establecer un tiempo mínimo entre ellos.
duración + 30% de la nota parece que funciona bien:
int pauseBetweenNotes = noteDuration * 1.30;
Delay(pauseBetweenNotes);
detener la reproducción de tono:
noTone(speaker);
}
void yellowLimit() {}
Serial.println();
Serial.Print ("es:");
Serial.Print(Distance);
Serial.Print ("cm cerca de un objeto");
digitalWrite(red,LOW);
digitalWrite(red1,LOW);
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(yellow1,HIGH);
para calcular la duración de la nota, tomar un segundo
dividido por el tipo de nota.
por ejemplo, trimestre Nota = 1000 / 4, corchea = 1000/8, etc..
int noteDuration = 1000/noteDurations [1];
tono (altavoz, melody[1],noteDuration);
para distinguir las notas, establecer un tiempo mínimo entre ellos.
duración + 30% de la nota parece que funciona bien:
int pauseBetweenNotes = noteDuration * 1.30;
Delay(pauseBetweenNotes);
detener la reproducción de tono:
noTone(speaker);
}
void greenLimit() {}
Serial.println();
Serial.Print ("hay un objeto:");
Serial.Print(Distance);
Serial.Print ("cm cerrar");
digitalWrite(yellow,LOW);
digitalWrite(yellow1,LOW);
digitalWrite(red,LOW);
digitalWrite(red1,LOW);
digitalWrite(green,HIGH);
digitalWrite(gren,HIGH);
para calcular la duración de la nota, tomar un segundo
dividido por el tipo de nota.
por ejemplo, trimestre Nota = 1000 / 4, corchea = 1000/8, etc..
int noteDuration = 1000/noteDurations [0];
tono (altavoz, melody[0],noteDuration);
para distinguir las notas, establecer un tiempo mínimo entre ellos.
duración + 30% de la nota parece que funciona bien:
int pauseBetweenNotes = noteDuration * 1.30;
Delay(pauseBetweenNotes);
detener la reproducción de tono:
noTone(speaker);
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
hay una ficha adicional que tiene a nombre de pitch.h e incluirá los campos que desea que su timbre para jugar. En mi código que tengo; solo NOTE_C4
#define NOTE_C4 262
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Así que básicamente lo que hace este código es medir la distancia y comprobar algunas condiciones. Si la distancia es menor que Xcm destilan el límite verde, si la distancia es menor que Xcm etc amarillo