.. 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_move:
Moverse
==============
Este es el primer proyecto de PiCrawler. Realiza su función más básica: moverse.
.. .. image:: img/move.png
**Ejecutar el Código**
.. raw:: html
.. code-block::
cd ~/picrawler/examples
sudo python3 1_move.py
Cuando el programa comienza, PiCrawler se pone de pie y espera brevemente.
Luego realiza continuamente un ciclo de movimientos:
avanzar, retroceder, girar a la izquierda, girar a la derecha,
pequeño giro a la izquierda y pequeño giro a la derecha.
Cada acción está separada por breves pausas para lograr un movimiento más suave.
Presione Ctrl+C para detener el programa.
Antes de salir, el crawler se sienta de forma segura.
**Código**
.. note::
Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, debes dirigirte 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 time import sleep
crawler = Picrawler() # Create PiCrawler object
def main():
speed = 80 # Movement speed
try:
crawler.do_step('stand', 40) # Stand up
sleep(1.0)
while True:
crawler.do_action('forward', 1, speed) # Move forward
sleep(0.25)
crawler.do_action('backward', 1, speed) # Move backward
sleep(0.25)
crawler.do_action('turn left', 1, speed) # Turn left
sleep(0.25)
crawler.do_action('turn right', 1, speed) # Turn right
sleep(0.25)
crawler.do_action('turn left angle', 1, speed) # Small left turn
sleep(0.3)
crawler.do_action('turn right angle', 1, speed) # Small right turn
sleep(0.3)
sleep(0.5)
except KeyboardInterrupt:
print("\nCtrl+C pressed...")
finally:
crawler.do_step('sit', 40) # Sit down before exit
sleep(1.0)
if __name__ == "__main__":
main()
**¿Cómo funciona?**
#. Importación e Inicialización
.. code-block:: python
from picrawler import Picrawler
from time import sleep
crawler = Picrawler()
El script importa los módulos necesarios y crea un
objeto ``Picrawler``, que se utiliza para controlar todos los movimientos del robot.
#. Función Principal y Configuración
.. code-block:: python
def main():
speed = 80
crawler.do_step('stand', 40)
sleep(1.0)
La función ``main()`` define la velocidad de movimiento.
Antes de iniciar el bucle, el robot se pone de pie y se estabiliza.
#. Bucle de Movimiento Continuo
.. code-block:: python
while True:
crawler.do_action('forward', 1, speed)
crawler.do_action('backward', 1, speed)
crawler.do_action('turn left', 1, speed)
crawler.do_action('turn right', 1, speed)
crawler.do_action('turn left angle', 1, speed)
crawler.do_action('turn right angle', 1, speed)
El robot ejecuta continuamente una secuencia predefinida
de acciones de movimiento dentro de un bucle infinito.
Pequeñas pausas entre las acciones ayudan a suavizar el movimiento.
#. Manejo de Salida Segura
.. code-block:: python
except KeyboardInterrupt:
print("\nCtrl+C pressed...")
finally:
crawler.do_step('sit', 40)
La estructura ``try / except / finally`` garantiza que:
- Ctrl+C detiene el bucle de forma segura.
- El robot se sienta antes de que el programa termine.
#. Entrada del Programa
.. code-block:: python
if __name__ == "__main__":
main()
Esto asegura que ``main()`` se ejecute solo cuando el script
se ejecuta directamente.