.. note:: ¡Hola! Bienvenido 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 a otros apasionados. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Preestrenos exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones y sorteos festivos**: Participa en sorteos y promociones especiales durante las festividades. 👉 ¿Listo para explorar y crear con nosotros? ¡Haz clic en [|link_sf_facebook|] y únete hoy mismo! 4. Respuesta ================ En este proyecto, PiDog interactuará contigo de una manera divertida. Si extiendes la mano y tocas la cabeza de PiDog desde el frente, ladrará de manera vigilante. .. image:: img/py_4-2.gif :width: 430 Pero si te acercas desde atrás y acaricias su cabeza, PiDog lo disfrutará mucho. .. raw:: html **Ejecutar el Código** .. raw:: html .. code-block:: cd ~/pidog/examples sudo python3 4_response.py Después de ejecutar este ejemplo, el módulo ultrasónico de PiDog detectará si hay un obstáculo adelante. Si detecta tu mano, la luz de respiración se iluminará en rojo, retrocederá un paso y ladrará. Al mismo tiempo, el sensor táctil también estará activo. Si se acaricia el sensor táctil (no solo tocar), PiDog moverá la cabeza, agitará la cola y mostrará una expresión de comodidad. **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como ``pidog\examples``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from pidog import Pidog from time import sleep from math import sin from preset_actions import bark_action my_dog = Pidog() sleep(0.1) def lean_forward(): my_dog.speak('angry', volume=80) bark_action(my_dog) sleep(0.2) bark_action(my_dog) sleep(0.8) bark_action(my_dog) def head_nod(step): y = 0 r = 0 p = 30 angs = [] for i in range(20): r = round(10*sin(i*0.314), 2) p = round(20*sin(i*0.314) + 10, 2) angs.append([y, r, p]) my_dog.head_move(angs*step, immediately=False, speed=80) def alert(): my_dog.do_action('stand', step_count=1, speed=90) my_dog.rgb_strip.set_mode('breath', color='pink', bps=1, brightness=0.8) while True: print( f'distance.value: {round(my_dog.ultrasonic.read_distance(), 2)} cm, touch {my_dog.dual_touch.read()}') # alerta if my_dog.ultrasonic.read_distance() < 15 and my_dog.ultrasonic.read_distance() > 1: my_dog.head_move([[0, 0, 0]], immediately=True, speed=90) my_dog.tail_move([[0]], immediately=True, speed=90) my_dog.rgb_strip.set_mode('bark', color='red', bps=2, brightness=0.8) my_dog.do_action('backward', step_count=1, speed=98) my_dog.wait_all_done() lean_forward() while len(my_dog.legs_action_buffer) > 0: sleep(0.1) my_dog.do_action('stand', step_count=1, speed=90) sleep(0.5) # relajado if my_dog.dual_touch.read() != 'N': if len(my_dog.head_action_buffer) < 2: head_nod(1) my_dog.do_action('wag_tail', step_count=10, speed=80) my_dog.rgb_strip.set_mode('listen', color="#8A2BE2", bps=0.35, brightness=0.8) # calmado else: my_dog.rgb_strip.set_mode('breath', color='pink', bps=1, brightness=0.8) my_dog.tail_stop() sleep(0.2) if __name__ == "__main__": try: alert() except KeyboardInterrupt: pass except Exception as e: print(f"\033[31mERROR: {e}\033[m") finally: my_dog.close()