yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
MicroROS V2 Robot Car📖
01.Introduction
  • 0.Unboxing Video
  • 1. Readme Learning Route
  • 2. Must Read Before Use
  • 3. Introduction to MicroROS V2 Control Board
  • 4. Introduction to LiDAR
  • 5. Introduction to ESP32 Camera Module
  • 6. FAQ
  • 7. About Charging
02.Assembly course
  • Assembly Video
03.Preparation
  • 1. Quickly Start
  • 2. Write Firmware
  • 3. Install VM and Start System
  • 4. Configure VM and Connect Robot
  • 5. Connect to MicroROS Agent
04.Quick start control course
  • 1. VM Keyboard Remote Control
  • 2. VM Handle Remote Control
  • 3. USB Handle Control
05.Robot control course
  • 1. Robot Information Release
  • 2. Robot Keyboard Control
  • 3. Robot Handle Control
  • 4. Robot State Estimation
  • 5. Linear Speed Calibration
  • 6. Angular Velocity Calibration
  • 7. Robot URDF Model
06.Lidar course
  • 1. Precautions for LiDAR Mapping and Navigation
  • 2. Lidar Avoid
  • 3. Lidar Following
  • 4. Lidar Guard
  • 5. Lidar Patrol
  • 6. Gmapping Mapping
  • 7. Cartographer Mapping
  • 8. Cartographer Quickly Repositioning Navigation
  • 9. Slam Toolx Mapping
  • 10. Navigation2 Single Point Navigation
  • 11. Navigation2 Multi Point Navigation
  • 12. Ros Robot App Mapping And Navigation
07.Road network planning
  • 1. Introduction to Road Network Planning and Quick Start
  • 2. Build a Pose Map
  • 3. Road Network Annotation
  • 4. Planning and Navigation Between Road Networks
  • 5. Road Network Navigation in Any Pose
  • 6. Path Replanning
08.Vision basic course
OpenCV Image Processing
  • 1. Introduction to OpenCV Source CV
  • 2. Open Source CV Geometric Transformation
  • 3. Open Source CV Image Processing and Drawing Text Line Segments
  • 4. Open Source CV Image Beautification
09.Visual General Course (For Standard&Superior version)
4. Yolov11&26 Visual Recognition
  • 1. YOLO Environment Setup
  • 2. CLI Usage
  • 3. Object Detection
  • 4. Instance Segmentation
  • 5. Pose Estimation
  • 6. Image Classification
  • 7. Oriented Bounding Boxes Object Detection
  • 8. Model Prediction
1. ESP32 Visual Recognition Module Configuration
  • 1. Serial Port Configuration WiFi Instructions
  • 2. Use ESP32 Camera Module in Robot Car
  • 3. Servo PTZ Calibration
2. OpenCV Visual Recognition
  • 1. Human Pose Estimation
  • 2. Object Detection
  • 3. AR Vision
  • 4. QR Code
  • 5. Color Recognition
  • 6. Facial Recognition
  • 7. AprilTag Machine Code Recognition
3. Mediapipe Visual Recognition
  • 1. Hand Detection
  • 2. Pose Detection
  • 3. Holistic Detection
  • 4. Facial Detection
  • 5. Facial Recognition
  • 6. Facial Special Effects
  • 7. 3D Object Recognition
  • 8. Brush
  • 9. Gesture Recognition
  • 10. Palm Target Localization
  • 11. Fingertip Trajectory Recognition
10.Visual Advanced Course (Just for Standard version)
1. Visual Control
  • 1. QR Code Recognition Control Action
  • 2. AprilTag Control Car Action Group
  • 3. Gesture Control Car Action Group
  • 4. Visual Line Tracking
2. Visual Tracking
  • 1. Color Tracking
  • 2. Facial Tracking
  • 3. QR Code Tracking
  • 4. Object Recognition And Tracking
  • 5. Mediapipe Palm Tracking
  • 6. Mediapipe Gesture Tracking
  • 7. Mediapipe Human Pose Tracking
  • 8. KCF Object Tracking
  • 9. AprilTag Machine Code Tracking
3. Visual Following
  • 1. Color Follow
  • 2. Face Follow
  • 3. QR Code Follow
  • 4. Mediapipe Palm Follow
  • 5. Mediapipe Gesture Follow
  • 6. Mediapipe Human Posture Follow
  • 7. AprilTag Machine Code Follow
  • 8. Object Follow
11.Visual Advanced Course (Just for Superior version)
1. Visual Control
  • 1. QR Code Recognition Control Action
  • 2. AprilTag Control Car Action Group
  • 3. Gesture Control Car Action Group
  • 4. Visual Line Tracking
2. Visual Tracking
  • 1. Color Tracking
  • 2. Facial Tracking
  • 3. QR Code Tracking
  • 4. YOLO Object Recognition and Tracking
  • 5. Mediapipe Palm Tracking
  • 6. Mediapipe Gesture Tracking
  • 7. Mediapipe Human Pose Tracking
  • 8. KCF Object Tracking
  • 9. AprilTag Machine Code Tracking
3. Visual Follow
  • 1. Color Follow
  • 2. Face Follow
  • 3. QR Code Follow
  • 4. Mediapipe Palm Follow
  • 5. Mediapipe Gesture Follow
  • 6. Mediapipe Human Pose Follow
  • 7. AprilTag Machine Code Follow
  • 8. Object Follow
12.AI Large Model Basic and Applications Course
1. AI Large Model Preparation
  • 1.AI Large Model Preparation
2. AI Large Model Basic Course
  • 1. AI Large Model Types and Principles
  • 2. RAG Retrieval Augmented and Training Samples
  • 3. Embodied Intelligent System Architecture
  • 4. Embodied Intelligence Core Source Code
3. AI Large Model Development
  • 1. Register Model Service Account
  • 2. Configure API KEY
  • 3. Dify Introduction
  • 4. Dify Basic Features
  • 5. RAG Knowledge Base Deployment
  • 6. AI Application Development Chatbot
  • 7. RAG Knowledge Base and Chatbot
  • 8. AI Agent Workflow
4. AI Large Model (Text Version)
  • 1. Semantic Understanding and Instruction Following
  • 2. Multimodal Visual Understanding
  • 3. Multimodal Visual Understanding + Basic Control
  • 4. Multimodal Visual Understanding + Object Following
  • 5. Multimodal Visual Understanding + Visual Line Following
  • 6. Multimodal Visual Understanding + SLAM Navigation
  • 7. Multimodal Visual Understanding + SLAM Navigation + Visual Line Following
  • 8. Multimodal Visual Understanding + SLAM Navigation + Object Following
  • 9. Intent Inference + Multimodal Visual Understanding + SLAM Navigation
13.Openclaw Basics Course
  • 1. Openclaw Introduction
  • 2. Openclaw Core Concepts
  • 3. Openclaw Api-Key Configuration
  • 4. Openclaw Switching Models
  • 5. Openclaw System Prompt
  • 6. Openclaw Common CLI Command
14. Openclaw Interaction Course
  • 1. Openclaw Webchat Interaction
  • 2. Openclaw Tui Interaction
  • 3. Openclaw Whatsapp Interaction
15.Openclaw Development Course
  • 1. Openclaw Robot Mcp Service Integration
  • 2. Robot CLI Command Tools
  • 3. Robot-Control Plugin Tools
  • 4. Openclaw Skills Development
  • 5. Openclaw Scheduled Tasks
  • 6. Openclaw Multi Agent System
  • 7. Openclaw Proactive Interaction
  • 8. Openclaw Vector Memory
16.Openclaw Embodied Intelligence Course
  • 1. OpenClaw Natural Interaction + Basic Control
  • 2. OpenClaw Natural Interaction + Slam Navigation
  • 3. OpenClaw Natural Interaction + Multimodal Visual Understand
  • 4. OpenClaw Natural Interaction + Multimodal Visual Understand + Slam Navigation + Visual Follow
  • 5. OpenClaw Natural Interaction + Multimodal Visual Understand + Slam Navigation + Visual Track
17.Multi-machine Course
  • 1. Multi Machine Handle Control
  • 2. Multi Machine Keyboard Control
  • 3. Multi Machine Navigation
18.MicroROS-V2 Control Board Development Environment
  • 1. Set Up the ESP32-IDF Development Environment
  • 2. ESP32-IDF Configuration Tool
  • 3. ESP Flash Tool Flashing Firmware
  • 4. Install ESP32 Microros Components
  • 5. Install And Start Microros Agent
19.MicroROS-V2 Control Board ESP32 Basic Course
  • 1. Led Light Up
  • 2. Button Function
  • 3. Drive Buzzer
  • 4. Oled
  • 5. Usb Host Function
  • 6. Serial Communication
  • 7. Battery Voltage Detection
  • 8. Drive Pwm Servo
  • 9. Drive Motors
  • 10. Read Motor Encoder Data
  • 11. Pid Motor Speed Control
  • 12. Robot Kinematics Analysis Theory
  • 13. Read Imu Data
  • 14. Read Lidar Data
  • 15. Flash Data Storage
  • 16. Custom Partition Table
  • 17. Bluetooth Communication
  • 18. Wifi Connection
  • 19. ESP32 Visual Recognition Module
20.MicroROS-V2 Control Board Micro_ros Basic Course
  • 1. Publish Topics
  • 2. Subscribe To Topics
  • 3. Multi Topic Subscription And Publishing
  • 4. Subscribe To Buzzer Topic
  • 5. Subscribe To Pwm Servo Topic
  • 6. Subscribe To Speed Control Topic
  • 7. Publish Odometry Topic
  • 8. Publish Imu Data Topic
  • 9. Publish Lidar Data Topic
21. Linux System Course
  • 1.Introduction to Linux system
  • 2.Ubuntu file system
  • 3.Ubuntu common commands
  • 4.Ubuntu common editors
  • 5.Ubuntu software operation commands
  • 6.Virtual machine installation
  • 7.SSH remote control
  • 8.VNC remote control
  • 9.Transfer files remotely
  • 10.Driver library and communication
  • 11.Static IP and hotspot mode
  • 12.Bind device ID
  • 13.Capacity expansion and resource allocation
  • 14.Update system software sources
  • 15.Set root user password
  • 16.sudo free password
  • 17.Connect to WiFi network
  • 18.View system version
  • 19.Customized service management
  • 20.Back up system image
22.Docker Course
  • 1.Docker overview and docker installation
  • 2.Common commands for docker image containers
  • 3.Docker images deeply understand and publish images
23.ROS Basic Course
  • 1.Introduction to ROS2
  • 2.ROS2 install Humble
  • 3.ROS2 development environment
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
Download
  • Mapping_APP(iOS_Android)
  • Code
  • Software_Tools
  • VM_System_File
  • 3D_Model_File
  • ESP32_Firmware
  • Dify LLM Base
  • Instruction_Manual
  • VMware
Download ZIP

Welcome to MicroROS V2 Robot Car repository

5. Subscribe To Pwm Servo Topic

Subscribing to the PWM Servo Topic

1. Experiment Objective

In this experiment, you will learn how to control the two PWM servos on the MicroROS-V2 control board through micro-ROS topics. Through this example, you will master multiple-subscriber management, the use of FreeRTOS Task Notifications, and the design pattern of using critical sections to protect shared data. This example subscribes to Int32 messages on the topics /servo_s1 and /servo_s2 respectively. The lower 8 bits of the message are parsed as an angle value of type int8_t, controlling the corresponding servo to rotate to the target angle.

2. Experiment Principle

1. Keyword Explanation

KeywordDescription
micro-ROS AgentA proxy program running on the ROS2 host side, responsible for bridging communication between the ESP32 firmware and the ROS2 system, connecting with the microcontroller via the UDP protocol
subscriberThe subscriber, the message-receiving end in ROS2 communication, subscribes to messages on a specified topic and triggers the callback function to process data when a new message arrives
rclcA ROS2 client library for microcontrollers, providing lightweight node, publisher, subscriber and other APIs, adapted to resource-constrained embedded devices
QoS (Reliable)The "reliable transmission" mode in the quality-of-service policy, which guarantees message delivery and ordering, suitable for control-type messages (such as servo commands) to ensure state consistency
FreeRTOS Task NotificationA lightweight inter-task communication mechanism provided by FreeRTOS, which directly sends a notification to a specified task. It is more efficient than a queue and suitable for simple event-trigger scenarios
critical sectionA critical section, which protects shared data by disabling interrupts or using a mutex lock, preventing data races caused by concurrent access from multiple tasks

2. Technical Architecture

This experiment builds a control chain from the ROS2 host to the two PWM servos on the ESP32:

  • Hardware layer: The MicroROS-V2 control board (ESP32), with servo S1 connected to GPIO8 and servo S2 connected to GPIO16, driven by the MCPWM peripheral

  • Transport layer: Uses the UDP protocol, communicating with the ROS2 host through the micro-ROS Agent

  • Node configuration: Node name servo_subscriber, subscribing to topics /servo_s1 and /servo_s2

  • Message type: std_msgs/msg/Int32, with the lower 8 bits parsed as an angle value of type int8_t

  • QoS mode: Reliable (default), ensuring servo control commands are reliably delivered

  • Data flow: ROS2 host publishes a message → Agent → UDP → micro-ROS stack → executor → subscription callback (updates the shared angle values + task notification) → servo worker thread → reads the target angle in a critical section → Servo_Set_Angle() → MCPWM hardware control

  • Design pattern: Three-task separation (micro-ROS communication task + servo execution task), critical sections protect shared data, and task notifications serve as wake-up signals

3. Core Topic Quick Reference

Firmware Downlink (Control Commands)

TopicMessage TypeQoSFieldRangeDirection
/servo_s1std_msgs/msg/Int32Reliabledata lower 8 bits parsed as int8_tS1: -90°~90°Input, controls the horizontal servo
/servo_s2std_msgs/msg/Int32Reliabledata lower 8 bits parsed as int8_tS2: -90°~20°Input, controls the vertical servo

Usage Example:

# Servo S1 rotates to 90°
ros2 topic pub /servo_s1 std_msgs/msg/Int32 "data: 90"
# Servo S2 rotates to -45° (camera facing straight ahead)
ros2 topic pub /servo_s2 std_msgs/msg/Int32 "data: -45"

4. Middleware Configuration

micro-ROS uses a static memory model (RCUTILS_AVOID_DYNAMIC_ALLOCATION=ON), all entity memory is pre-allocated at compile time, and runtime dynamic creation is not supported.

Configuration file: ~/esp/extra_components/micro_ros_espidf_component/colcon.meta

| RMW_UXRCE_TRANSPORT | udp | UDP transport (Wi-Fi communication) | | RMW_UXRCE_MAX_PUBLISHERS | 6 | Maximum number of publishers | | RMW_UXRCE_MAX_SUBSCRIPTIONS | 6 | Maximum number of subscribers | | RMW_UXRCE_MAX_NODES | 1 | Maximum number of nodes | | RMW_UXRCE_MAX_SERVICES | 0 | Services not supported | | RMW_UXRCE_MAX_CLIENTS | 0 | Clients not supported | | RMW_UXRCE_MAX_HISTORY | 1 | History depth = 1, no message queuing | | UCLIENT_UDP_TRANSPORT_MTU | 4096 | Maximum UDP packet size 4 KB | | UCLIENT_MIN_HEARTBEAT_TIME_INTERVAL | 1 | Agent heartbeat interval 1 ms |

Key Constraints:

  • MAX_HISTORY=1 means there is no message buffer queue, so uplink topics (firmware → host) uniformly use best_effort QoS

  • MAX_SERVICES=0, MAX_CLIENTS=0 means only topic communication is supported, not Service/Client

  • After modifying colcon.meta, the micro-ROS library must be recompiled for the changes to take effect: run idf.py clean-microros in the project directory to clean and rebuild the micro-ROS library, then idf.py build to compile the firmware

3. Experiment Steps

1. Hardware Preparation

HardwareRequirement
MicroROS-V2 control board✅ Required
USB Type-C cable✅ Required
Wi-Fi network (2.4 GHz)✅ Required
PWM servo ×2✅ Required (connected to GPIO8 and GPIO16)

2. Prerequisites

  1. The ESP32-IDF development environment has been set up

  2. The MicroROS-V2 control board is connected to the computer via USB

  3. Configure the Wi-Fi SSID, password, Agent IP and port via idf.py menuconfig (the micro_ros menu item)

    xxxxxxxxxx
    cd ~/esp/microROS_samples/servo_subscriber
    source ~/esp/esp-idf/export.sh
    idf.py menuconfig

    image-20260723154206694

    1. Select example-app setting to set the domain ID to be consistent with the virtual machine

    image-20260811195001045

    After configuration, press "s" to save and press "q" to exit the configuration interface.

  4. Connect servo S1 to GPIO8 and servo S2 to GPIO16

3. Start micro_ros_agent (Terminal 1)

Start the micro-ROS Agent on the ROS2 host:

xxxxxxxxxx
cd ~/uros_ws
source install/local_setup.bash
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8090 -v4

4. Build and Flash (Terminal 2)

​x

cd ~/esp/microROS_samples/servo_subscriber
source ~/esp/esp-idf/export.sh
idf.py build flash monitor

5. How to Stop

  1. Press Ctrl+] in Terminal 2 to exit the serial monitor (stop firmware execution)

  2. Press Ctrl+C in Terminal 1 to stop micro_ros_agent

4. Experiment Result

After the build and flash succeed, publish servo control commands on the ROS2 host:

xxxxxxxxxx
# Servo S1 rotates to 90°
ros2 topic pub /servo_s1 std_msgs/msg/Int32 "data: 90"

# Servo S1 rotates to -90°
ros2 topic pub /servo_s1 std_msgs/msg/Int32 "data: -90"

# Servo S2 rotates to 0° (camera facing upward)
ros2 topic pub /servo_s2 std_msgs/msg/Int32 "data: 0"

# Servo S2 rotates to -45° (camera facing straight ahead, default angle)
ros2 topic pub /servo_s2 std_msgs/msg/Int32 "data: -45"

The control board serial port will output:

xxxxxxxxxx
I (xxx) MAIN: Agent reachable: 192.168.x.x:8888
I (xxx) MAIN: micro-ROS servo subscriber init done
I (xxx) MAIN: Servo S1: 90
I (xxx) MAIN: Servo S2: -45

Data encoding quick reference table:

Target angleInt32 data (hexadecimal)Int32 data (decimal)
90°0x0000005A90
45°0x0000002D45
0°0x000000000
-45°0xFFFFFFD3-45
-90°0xFFFFFFA6-90

Tip: The data field of std_msgs/msg/Int32 is the signed int32 type. On the ROS2 command line, you can directly use the signed decimal value (such as data: -45), without manually converting to an unsigned representation.

5. Program Analysis

Source code paths:

  • Firmware source code: ~/esp/microROS_samples/servo_subscriber/main/main.c

  • Servo driver: ~/esp/microROS_samples/servo_subscriber/components/servo/servo.h, servo.c

1. Main Program Logic

main/main.c adopts a three-task separation design:

  1. In app_main():

    • Calls Servo_Init() to initialize the MCPWM peripherals for the two servos

    • Creates the servo_worker_task task

    • Initializes the Wi-Fi network

    • Creates the micro_ros_task task

  2. In micro_ros_task:

    • Creates the node servo_subscriber

    • Subscribes to topics /servo_s1 and /servo_s2 in Reliable mode (servo control requires reliable transmission)

    • The two subscription callbacks update the target angle of the corresponding servo and wake up the execution task via task notification

  3. In servo_worker_task:

    • Waits for the task notification

    • Reads the target angles under the protection of a critical section

    • Calls Servo_Set_Angle() to drive the servos

2. Key Components

components/servo/servo.h — Servo driver interface:

Parameter definition file: ~/esp/microROS_samples/servo_subscriber/components/servo/servo.h

Pin/ParameterValueDescription
SERVO_GPIO_S18PWM signal line of servo S1
SERVO_GPIO_S216PWM signal line of servo S2
SERVO_TIMEBASE_RESOLUTION_HZ10000001 MHz, 1 us resolution
SERVO_TIMEBASE_PERIOD2000020000 ticks = 20 ms period
SERVO_MIN_PULSEWIDTH_US500Minimum pulse width 500 us (corresponding to -90°)
SERVO_MAX_PULSEWIDTH_US2500Maximum pulse width 2500 us (corresponding to 90°)

Servo angle limits:

ServoDefault angleMinimum angleMaximum angleDescription
S10°-90°90°Horizontal servo, fully adjustable range
S2-45°-90°20°Vertical servo, -45° means the camera faces straight ahead

components/servo/servo.c — Core servo driver functions:

FunctionDescription
Servo_Init()Initializes the MCPWM peripherals of servos S1 and S2 and sets the default angles
Servo_Set_Angle(servo_id_t servo, int8_t angle)Sets the target angle of the specified servo (automatically clamped)

Angle encoding/decoding rules:

The angle command uses the lower 8 bits of the Int32 message, parsed as int8_t:

xxxxxxxxxx
static inline int8_t servo_decode_angle_compat(int32_t raw_value)
{
    return (int8_t)(raw_value & 0xFF);
}

Examples:

  • data: 90 (hexadecimal 0x0000005A) → lower 8 bits 0x5A = 90 → 90°

  • data: -90 (hexadecimal 0xFFFFFFA6) → lower 8 bits 0xA6 = -90 → -90°

Task notification and critical section design:

Source file: ~/esp/microROS_samples/servo_subscriber/main/main.c

xxxxxxxxxx
/* Subscription callback: only updates the target value, does not directly drive the servo */
static void servo_s1_callback(const void *msgin)
{
    const std_msgs__msg__Int32 *msg = (const std_msgs__msg__Int32 *)msgin;
    const int8_t angle = servo_decode_angle_compat(msg->data);

    taskENTER_CRITICAL(&s_servo_lock);
    s_servo_target_s1 = angle;
    taskEXIT_CRITICAL(&s_servo_lock);

    (void)xTaskNotify(s_servo_worker_handle, SERVO_NOTIFY_S1, eSetBits);
}

/* Servo execution task: all actual Servo_Set_Angle calls are executed here uniformly */
static void servo_worker_task(void *arg)
{
    while (1) {
        uint32_t notify_value = 0;
        xTaskNotifyWait(0, UINT32_MAX, &notify_value, portMAX_DELAY);

        taskENTER_CRITICAL(&s_servo_lock);
        int8_t angle_s1 = s_servo_target_s1;
        int8_t angle_s2 = s_servo_target_s2;
        taskEXIT_CRITICAL(&s_servo_lock);

        if ((notify_value & SERVO_NOTIFY_S1) != 0U) {
            Servo_Set_Angle(SERVO_ID_S1, angle_s1);
        }
        if ((notify_value & SERVO_NOTIFY_S2) != 0U) {
            Servo_Set_Angle(SERVO_ID_S2, angle_s2);
        }
    }
}

Topic configuration:

Parameter definition file: ~/esp/microROS_samples/servo_subscriber/main/main.c

Configuration ItemValueDescription
Node nameservo_subscriberROS2 node name
Topic namesservo_s1, servo_s2Control the two servos respectively
Message typestd_msgs/msg/Int32Lower 8 bits parsed as angle of type int8_t
QoS modeReliable (default)Control-type messages must be reliably transmitted; packet loss would cause servo state inconsistency
Executor handle count22 subscribers

6. Common Problems

ProblemCauseSolution
The servo does not rotateThe servo is not connected correctly or the power supply is insufficientCheck whether the servo connections are correct (S1→GPIO8, S2→GPIO16) and ensure sufficient servo power
Abnormal servo angleAngle value encoding error or out of limitsConfirm the angle is within the allowed range of the servo (S1: -90~90°, S2: -90~20°); out-of-range values are automatically clamped
Servo jitter after publishing a messageQoS packet loss causes state inconsistencyThe servo subscription uses Reliable mode to ensure reliable transmission
Servo response delayScheduling delay in task notificationThis is normal behavior, about 1~2 FreeRTOS ticks of delay

Safety tip: The servo angles are automatically limited to the defined ranges (see SERVO_Sx_MIN_ANGLE and SERVO_Sx_MAX_ANGLE in servo.h). Out-of-range values are clamped to protect the servos from damage.

Subscribe To Buzzer Topic
Subscribe To Speed Control Topic

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文