.. note:: Hello, welcome to the SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebook! Dive deeper into Raspberry Pi, Arduino, and ESP32 with fellow enthusiasts. **Why Join?** - **Expert Support**: Solve post-sale issues and technical challenges with help from our community and team. - **Learn & Share**: Exchange tips and tutorials to enhance your skills. - **Exclusive Previews**: Get early access to new product announcements and sneak peeks. - **Special Discounts**: Enjoy exclusive discounts on our newest products. - **Festive Promotions and Giveaways**: Take part in giveaways and holiday promotions. 👉 Ready to explore and create with us? Click [|link_sf_facebook|] and join today! .. _py_move: 1. Let PiCar-X Move ======================== This is the first project, let’s test the basic movement of Picar-X. **Run the Code** .. raw:: html .. code-block:: cd ~/picar-x/example sudo python3 1.move.py After running the code, PiCar-X will move forward, turn in an S-shape, stop and shake its head. **Code** .. note:: You can **Modify/Reset/Copy/Run/Stop** the code below. But before that, you need to go to source code path like ``picar-x/example``. After modifying the code, you can run it directly to see the effect. .. 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) **How it works?** The basic functionality of PiCar-X is in the ``picarx`` module, Can be used to control steering gear and wheels, and will make the PiCar-X move forward, turn in an S-shape, or shake its head. Now, the libraries to support the basic functionality of PiCar-X are imported. These lines will appear in all the examples that involve PiCar-X movement. .. code-block:: python :emphasize-lines: 0 from picarx import Picarx import time The following function with the ``for`` loop is then used to make PiCar-X move forward, change directions, and move the camera's 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()``: Orders the PiCar-X go forward at a given ``speed``. * ``set_dir_servo_angle``: Turns the Steering servo to a specific ``angle``. * ``set_cam_pan_angle``: Turns the Pan servo to a specific ``angle``. * ``set_cam_tilt_angle``: Turns the Tilt servo to a specific ``angle``. .. image:: img/pan_tilt_servo.png :width: 400