.. note:: ¡Hola! Bienvenidos a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto con otros apasionados. **¿Por qué unirse?** - **Soporte de Expertos**: Soluciona problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Avances Exclusivos**: Accede anticipadamente a anuncios de nuevos productos y adelantos. - **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones y Sorteos Festivos**: Participa en sorteos y promociones especiales en días festivos. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy. 3.1.2 Bienvenida ==================== Introducción -------------- En este proyecto, utilizaremos un sensor PIR para detectar el movimiento de personas y, con un servo, LED y un zumbador, simularemos el funcionamiento de una puerta automática de tienda. Cuando el peatón se encuentre dentro del rango de detección del PIR, la luz indicadora se encenderá, la puerta se abrirá y el zumbador emitirá el sonido de bienvenida. Componentes -------------- .. image:: img/list_Welcome.png :align: center Diagrama de Circuito ----------------------- ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO18 Pin 12 1 18 GPIO17 Pin 11 0 17 GPIO27 Pin 13 2 27 GPIO22 Pin 15 3 22 ============ ======== ======== === .. image:: img/Schematic_three_one2.png :align: center Procedimientos Experimentales -------------------------------- **Paso 1:** Construye el circuito. .. image:: img/image239.png :alt: C:\Users\sunfounder\Desktop\3.1.4_Welcome_bb.png3.1.4_Welcome_bb :width: 800 :align: center **Paso 2:** Cambia al directorio. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/c/3.1.2/ **Paso 3:** Compila. .. raw:: html .. code-block:: gcc 3.1.2_Welcome.c -lwiringPi **Paso 4:** Ejecuta. .. raw:: html .. code-block:: sudo ./a.out Al ejecutar el código, si el sensor PIR detecta a alguien pasando, la puerta se abrirá automáticamente (simulada por el servo), se encenderá el indicador y se reproducirá la música de bienvenida. Al terminar la melodía, el sistema cerrará la puerta y apagará la luz indicadora, quedando listo para la próxima detección de alguien que pase. El módulo PIR cuenta con dos potenciómetros: uno para ajustar la sensibilidad y otro para ajustar la distancia de detección. Para optimizar el rendimiento del módulo PIR, ajusta ambos potenciómetros al máximo en sentido antihorario. .. note:: Si no funciona tras ejecutar el código, o aparece el mensaje de error: \"wiringPi.h: No such file or directory", consulta :ref:`faq_c_nowork`. **Explicación del Código** .. code-block:: c void setAngle(int pin, int angle){ //Crear función para controlar el ángulo del servo. if(angle < 0) angle = 0; if(angle > 180) angle = 180; softPwmWrite(pin,Map(angle, 0, 180, 5, 25)); } Crea una función, setAngle, para definir el ángulo en el servo en un rango de 0 a 180. .. code-block:: c void doorbell(){ for(int i=0;i-1;i--){ //gira el servo desde el ángulo máximo al mínimo setAngle(servoPin,i); delay(1); } } Crea una función closedoor para simular el cierre de la puerta, apagar el LED y hacer que el servo gire de 180 grados a 0 grados. .. code-block:: c void opendoor(){ digitalWrite(ledPin, HIGH); //enciende el LED for(int i=0;i<181;i++){ //gira el servo desde el ángulo mínimo al máximo setAngle(servoPin,i); delay(1); } doorbell(); closedoor(); } La función opendoor() incluye varias acciones: encender la luz indicadora, girar el servo (simulando la apertura de la puerta), reproducir la música de bienvenida de la tienda y llamar a la función closedoor() después de la música. .. code-block:: c int main(void) { if(wiringPiSetup() == -1){ //si la inicialización de wiring falla, imprime mensaje en pantalla printf("setup wiringPi failed !"); return 1; } if(softToneCreate(BuzPin) == -1){ printf("setup softTone failed !"); return 1; ...... En la función main(), inicializa la biblioteca wiringPi y configura softTone, luego establece ledPin en estado de salida y pirPin en estado de entrada. Si el sensor PIR detecta que alguien pasa, la función opendoor será llamada para simular la apertura de la puerta.