Kroky pro ovládání servomotoru
1
Otevřete OmniBoard Studio a vytvořte nový projekt.
2
Sestavte blokový diagram pro pohyb serva z 0° na 180° a zpět.
Zkuste si diagram sestavit sami, nebo klikněte sem a prohlédněte si jedno z možných řešení. ▼
- ● Umístěte blok Start a propojte jej s blokem While True.
- ● Přidejte blok Set Servo Angle nastavený na 0°, za nímž následuje blok Timer (např. 1000 ms).
- ● Přidejte druhý blok Set Servo Angle nastavený na 90°, za nímž následuje další blok Timer.
- ● Přidejte třetí blok Set Servo Angle nastavený na 180°, za nímž následuje blok Timer. Smyčka se poté vrátí na 0° a pohyb se opakuje.
3
Zapojte servomotor k mikrokontroléru.
- ● Standardní servo má tři vodiče: Napájení (obvykle červený) → připojte k 5 V, Zem (obvykle hnědý nebo černý) → připojte k GND, Signál (obvykle oranžový nebo žlutý) → připojte ke GPIO pinu s podporou PWM.
- ● Poznámka: pokud servo odebírá příliš velký proud, použijte pro napájení serva externí zdroj 5 V a sdílejte pouze zem s mikrokontrolérem.
4
Zkompilujte kód a nahrajte jej do svého mikrokontroléru.
5
Sledujte, jak rameno serva přechází z 0° na 90° a dále na 180° a opakovaně se vrací zpět!
Bonusové informace
- Zde je zjednodušený kód v MicroPythonu pro otáčení servomotoru:
import machine
import time
# Servo control on GPIO pin 5 at 50 Hz (standard servo frequency)
pwm = machine.PWM(machine.Pin(5), freq=50)
def set_angle(angle):
# Convert angle (0-180) to duty cycle (approx 40-115 for ESP32)
duty = int(40 + (angle / 180) * 75)
pwm.duty(duty)
while True:
set_angle(0) # Move to 0 degrees
time.sleep(1)
set_angle(90) # Move to 90 degrees
time.sleep(1)
set_angle(180) # Move to 180 degrees
time.sleep(1)
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(5, GPIO.OUT)
pwm = GPIO.PWM(5, 50) # 50 Hz for servo
pwm.start(0)
def set_angle(angle):
duty = 2 + (angle / 18) # Convert angle to duty cycle
pwm.ChangeDutyCycle(duty)
while True:
set_angle(0)
time.sleep(1)
set_angle(90)
time.sleep(1)
set_angle(180)
time.sleep(1)