.. note::
¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. ¡Profundiza en el mundo de Raspberry Pi, Arduino y ESP32 junto 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.
- **Preestrenos exclusivos**: Obtén acceso anticipado a anuncios de nuevos productos y adelantos.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones festivas y sorteos**: Participa en sorteos y promociones especiales.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy.
.. _py_move:
2. Haz que PiCar-X se mueva
===============================
Este es el primer proyecto, vamos a probar los movimientos básicos del PiCar-X.
**Ejecutar el Código**
.. raw:: html
.. code-block::
cd ~/picar-x/example
sudo python3 2.move.py
Después de ejecutar el código, PiCar-X avanzará, girará en forma de S, se detendrá y moverá la cabeza.
**Código**
.. note::
Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, debes ir a la ruta del código fuente como ``picar-x/example``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
.. raw:: html
.. code-block:: python
from picarx import Picarx
import time
if __name__ == "__main__":
try:
px = Picarx()
px.forward(30)
time.sleep(0.5)
for angle in range(0,35):
px.set_dir_servo_angle(angle)
time.sleep(0.01)
for angle in range(35,-35,-1):
px.set_dir_servo_angle(angle)
time.sleep(0.01)
for angle in range(-35,0):
px.set_dir_servo_angle(angle)
time.sleep(0.01)
px.forward(0)
time.sleep(1)
for angle in range(0,35):
px.set_camera_servo1_angle(angle)
time.sleep(0.01)
for angle in range(35,-35,-1):
px.set_camera_servo1_angle(angle)
time.sleep(0.01)
for angle in range(-35,0):
px.set_camera_servo1_angle(angle)
time.sleep(0.01)
for angle in range(0,35):
px.set_camera_servo2_angle(angle)
time.sleep(0.01)
for angle in range(35,-35,-1):
px.set_camera_servo2_angle(angle)
time.sleep(0.01)
for angle in range(-35,0):
px.set_camera_servo2_angle(angle)
time.sleep(0.01)
finally:
px.forward(0)
**¿Cómo funciona?**
La funcionalidad básica del PiCar-X está en el módulo ``picarx``,
que se usa para controlar los servos de dirección y las ruedas,
haciendo que PiCar-X avance, gire en forma de S o mueva su cabeza.
Ahora, las librerías que permiten la funcionalidad básica de PiCar-X se importan.
Estas líneas aparecerán en todos los ejemplos que involucren el movimiento del PiCar-X.
.. code-block:: python
:emphasize-lines: 0
from picarx import Picarx
import time
La siguiente función con el bucle ``for`` se usa para hacer que PiCar-X
avance, cambie de dirección y mueva la cámara en los ejes de pan/tilt.
.. code-block:: python
px.forward(speed)
px.set_dir_servo_angle(angle)
px.set_camera_servo1_angle(angle)
px.set_camera_servo2_angle(angle)
* ``forward()``: Ordena al PiCar-X avanzar a una velocidad ``speed`` específica.
* ``set_dir_servo_angle``: Gira el servo de dirección a un ``ángulo`` específico.
* ``set_cam_pan_angle``: Gira el servo de paneo a un ``ángulo`` específico.
* ``set_cam_tilt_angle``: Gira el servo de inclinación a un ``ángulo`` específico.
.. image:: img/pan_tilt_servo.png
:width: 400