circuito para entrada y salida de estacionamiento

Este código es un programa para un microcontrolador Arduino que controla dos servomotores, dos sensores de distancia ultrasónicos y un LED RGB. A continuación explico cómo funciona cada parte del código:


 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