1. *LibrerÃas y Objetos*
cpp
#include <Servo.h>
Servo ioe;
Servo ioe2;
- *Servo.h* es una librerÃa que permite controlar servomotores, que son pequeños motores que pueden girar a ángulos especÃficos.
- ioe y ioe2 son objetos que representan los dos servomotores.
2. *Declaración de Pines*
cpp
int trig = 2;
int echo = 3;
int trig2 = 9;
int echo2 = 8;
int ledRojo = 5;
int ledVerde = 6;
int ledAzul = 7;
- Los pines trig y echo se usan para el primer sensor ultrasónico. El sensor envÃa una señal con el pin trig y recibe el eco de la señal con el pin echo.
- Lo mismo ocurre con los pines trig2 y echo2, pero para el segundo sensor ultrasónico.
- Los pines ledRojo, ledVerde y ledAzul controlan los colores del LED RGB.
3. *Configuración Inicial (setup)*
cpp
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
ioe.attach(4);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
ioe2.attach(10);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAzul, OUTPUT);
digitalWrite(ledRojo, LOW);
digitalWrite(ledVerde, LOW);
digitalWrite(ledAzul, LOW);
}
- Se configura qué pines son de salida (OUTPUT), como los que envÃan señales a los sensores y los que controlan los LEDs, y cuáles son de entrada (INPUT), que reciben la información de los sensores.
- Los servos ioe y ioe2 se conectan a los pines 4 y 10, respectivamente.
4. *Bucle Principal (loop)*
El código dentro del bloque loop se repite continuamente:
- *Primer Sensor de Distancia*:
cpp
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
tiempo = pulseIn(echo, HIGH);
distancia = tiempo / 58.2;
Este bloque activa el sensor ultrasónico y calcula la distancia a un objeto. La distancia se calcula con la fórmula distancia = tiempo / 58.2, donde tiempo es el tiempo que tarda la señal en rebotar.
- *Movimiento del Primer Servo*:
cpp
if (distancia <= 10 && tiempo > 0) {
ioe.write(90);
sensorActivo = true;
} else {
ioe.write(0);
}
Si el sensor detecta un objeto a menos de 10 cm, el servomotor gira a 90 grados (posición elevada). Si no, el servo vuelve a 0 grados (posición original).
- *Segundo Sensor de Distancia y Segundo Servo*:
Lo mismo se repite para el segundo sensor y el segundo servo.
- *Control del LED RGB*:
cpp
if (sensorActivo) {
digitalWrite(ledVerde, HIGH);
digitalWrite(ledRojo, LOW);
} else {
digitalWrite(ledRojo, HIGH);
digitalWrite(ledVerde, LOW);
}
Si uno de los dos sensores detecta un objeto, el LED se pone en verde. Si ninguno detecta nada, el LED se pone en rojo.
- *Restablecimiento de los Servos*:
Si uno de los sensores detecta un objeto, el servo se queda en posición elevada por 2 segundos y luego vuelve a su posición original.
### Resumen
Este código controla dos sensores ultrasónicos que detectan objetos cercanos. Si uno de ellos detecta algo a menos de 10 cm, el servomotor correspondiente gira a 90 grados. Además, un LED cambia de color a verde si se detecta un objeto, o a rojo si no se detecta nada. Todo esto se repite en bucle.
No hay comentarios:
Publicar un comentario