Řízení modelářských serv pomocí Raspberry Pi Pico je velmi jednoduché. Používá se k tomu pulsně šířková modulace ( psal jsem o tom tady ). Podle velikosti zaplnění PWM se servo natočí do příslušné polohy (příslušný úhel). Dají se připojit přímo na pin Pica bez převodníku. Napájení stačí 3.3V. Jak se taková serva programují podrobněji se dozvíte zde.

Červený vodič je 3.3V, černý vodič je zem a žlutý vodič je řídící, zde připojen na GPIO15.
Při úvahách, které servo použít ve vašem projektu, mějte na paměti to, že toto servo je určené pro ovládání hraček. Umí vyvinout sílu jenom 9g (0.09 N). Mechanicky je velmi jemné, má umělohmotné převody, takže se při hrubším zacházení snadno poláme.
Program
Knihovnu pro ovládání těchto serv naprogramoval pan Markus Hintersteiner a nachází se na Githubu v repozitáři pico-servo.
git clone https://github.com/markushi/pico-servo[pico-servo]
mkdir build
cd build
cmake ..
make -j4
Knihovna se používá takto:
#include "pico/stdlib.h"
#include "hardware.pwm.h"
#define SERVO_PIN 15
...
servo_enable( SERVO_PIN );
...
// nastavení úhlu od 0˚ do 180˚
servo_set_position( SERVO_PIN, uhel );
cmake_minimum_required(VERSION 3.12)
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
project(servo_example)
pico_sdk_init()
add_executable(servo_example
src/pico_servo.c
src/pico_servo.h
example.c
)
pico_add_extra_outputs(servo_example)
target_link_libraries(servo_example pico_stdlib hardware_pwm)
pico_enable_stdio_usb(servo_example 1)
pico_enable_stdio_uart(servo_example 0)