Aprenderemos a utilizar el sensor ultrasónico HC-SR04 para medir distancia y encender un LED cuando se encuentre el objeto dentro de un determinado rango. Usaremos el Monitor Serial para ver en tiempo real el valor de distancia medido.
// Capitulo 5 Primer programa que envía mediante el Monitor Serial el valor de distancia leído por el sensor ultrasónico HC-SR04.
int TRIG = 10; // trigger en pin 10
int ECO = 9; // echo en pin 9
int LED = 3; // LED en pin 3
int DURACION;
int DISTANCIA;
void setup()
{
pinMode(TRIG, OUTPUT); // trigger como salida
pinMode(ECO, INPUT); // echo como entrada
pinMode(LED, OUTPUT); // LED como salida
Serial.begin(9600); // inicializacion de comunicacion serial a 9600 bps
}
void loop()
{
digitalWrite(TRIG, HIGH); // generacion del pulso a enviar
delay(1); // al pin conectado al trigger
digitalWrite(TRIG, LOW); // del sensor
DURACION = pulseIn(ECO, HIGH); // con funcion pulseIn se espera un pulso
// alto en Echo
DISTANCIA = DURACION / 58.2; // distancia medida en centimetros
Serial.println(DISTANCIA); // envio de valor de distancia por monitor serial
delay(200); // demora entre datos
}
// Capitulo 5 Segundo programa que envía mediante el Monitor Serial el valor de distancia leído por el sensor ultrasónico HC-SR04 y enciende y apaga LED dentro del rango de 0 a 20 cms.
int TRIG = 10; // trigger en pin 10
int ECO = 9; // echo en pin 9
int LED = 3; // LED en pin 3
int DURACION;
int DISTANCIA;
void setup()
{
pinMode(TRIG, OUTPUT); // trigger como salida
pinMode(ECO, INPUT); // echo como entrada
pinMode(LED, OUTPUT); // LED como salida
Serial.begin(9600); // inicializacion de comunicacion serial a 9600 bps
}
void loop()
{
digitalWrite(TRIG, HIGH); // generacion del pulso a enviar
delay(1); // al pin conectado al trigger
digitalWrite(TRIG, LOW); // del sensor
DURACION = pulseIn(ECO, HIGH); // con funcion pulseIn se espera un pulso
// alto en Echo
DISTANCIA = DURACION / 58.2; // distancia medida en centimetros
Serial.println(DISTANCIA); // envio de valor de distancia por monitor serial
delay(200); // demora entre datos
if (DISTANCIA <= 20 && DISTANCIA >= 0){ // si distancia entre 0 y 20 cms.
digitalWrite(LED, HIGH); // enciende LED
delay(DISTANCIA * 10); // demora proporcional a la distancia
digitalWrite(LED, LOW); // apaga LED
}
}