.. note:: Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. ¡Explora más a fondo Raspberry Pi, Arduino y ESP32 con otros entusiastas! **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa 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**: Obtén acceso anticipado a anuncios de nuevos productos y vistas previas. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _py_twist: Twist ============== Ya sabemos cómo hacer que PiCrawler asuma una pose específica. El siguiente paso es combinar las poses para formar una acción continua. Aquí, las cuatro patas de PiCrawler se levantan y bajan de dos en dos, saltando al ritmo de la música. **Ejecutar el Código** .. raw:: html .. code-block:: cd ~/picrawler/examples sudo python3 12_twist.py Después de que el programa comienza, el robot primero se pone de pie lentamente para alcanzar una postura estable. Una vez de pie, la música de fondo comienza a reproducirse. Al mismo tiempo, el robot realiza un movimiento continuo de baile con torsión. Durante este movimiento, las cuatro patas se levantan y bajan alternativamente, creando un efecto rítmico de torsión. Las patas se mueven en pares coordinados para que el cuerpo parezca balancearse de un lado a otro. Un pequeño retraso entre cada paso hace que el movimiento sea más suave y estable, en lugar de brusco o demasiado rápido. El robot continúa bailando mientras suena la música. Cuando se presiona **Ctrl+C**, el programa se detiene y el robot vuelve de forma segura a una posición sentada antes de salir. **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes, necesitas ir a la ruta del código fuente como ``picrawler\examples``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python from picrawler import Picrawler from robot_hat import Music from time import sleep music = Music() crawler = Picrawler() def twist(speed): new_step = [[50, 50, -80], [50, 50, -80], [50, 50, -80], [50, 50, -80]] for i in range(4): for inc in range(30, 60, 5): rise = [50, 50, (-80 + inc * 0.5)] drop = [50, 50, (-80 - inc)] new_step[i] = rise new_step[(i + 2) % 4] = drop new_step[(i + 1) % 4] = rise new_step[(i - 1) % 4] = drop crawler.do_step(new_step, speed) sleep(0.03) # small delay to make motion smoother and less "crazy" def main(): try: # Stand up slowly first crawler.do_step('stand', 40) sleep(1.0) # Start music music.music_play('./musics/sports-Ahjay_Stelino.mp3') music.music_set_volume(20) while True: twist(speed=100) except KeyboardInterrupt: print("\nCtrl+C detected, exiting...") finally: # Sit down safely before exit try: crawler.do_step('sit', 40) sleep(1.0) except Exception: pass if __name__ == "__main__": main() **¿Cómo funciona?** En este código, debes prestar atención a esta parte: .. code-block:: python def twist(speed): new_step = [[50, 50, -80], [50, 50, -80], [50, 50, -80], [50, 50, -80]] for i in range(4): for inc in range(30, 60, 5): rise = [50, 50, (-80 + inc * 0.5)] drop = [50, 50, (-80 - inc)] new_step[i] = rise new_step[(i + 2) % 4] = drop new_step[(i + 1) % 4] = rise new_step[(i - 1) % 4] = drop crawler.do_step(new_step, speed) sleep(0.03) # small delay to make motion smoother and less "crazy" En resumen, utiliza dos capas de bucles for para que el array ``new_step`` produzca cambios continuos y regulares. Al mismo tiempo, ``crawler.do_step()`` ejecuta la pose para formar una acción continua. Puedes obtener intuitivamente el array de valores de coordenadas correspondiente a cada pose desde :ref:`py_posture`. Además, el ejemplo también reproduce música de fondo. El método de implementación es el siguiente. Reproduce música importando las siguientes bibliotecas: .. code-block:: python from robot_hat import Music Declara un objeto Music: .. code-block:: python music = Music() Reproduce la música de fondo en el directorio ``picrawler/examples/musics`` y establece el volumen en 20. También puedes añadir música a la carpeta ``musics`` mediante :ref:`filezilla`. .. code-block:: python music.music_play('./musics/sports-Ahjay_Stelino.mp3') music.music_set_volume(20) .. note:: Puedes agregar diferentes efectos de sonido o música a las carpetas ``musics`` o ``sounds`` a través de :ref:`filezilla`.