Skip to main content

Servo skeniranje

Što ovaj primjer prikazuje​

Pogon hobističkog serva po kutu umjesto po sirovim impulsima, te njegovo skeniranje naprijed-natrag unutar konfiguriranog raspona. Ovo je primarna oglašena namjena ploče.

Primjer koda​

from pca9685 import PCA9685
from utime import sleep_ms

pwm = PCA9685() # sets 50Hz PWM frequency by default, suitable for hobby servos

# Adjust to match your servo's datasheet if it doesn't reach full range
pwm.setServoPulseRange(500, 2500) # microseconds
pwm.setServoAngleRange(0, 180) # degrees

while True:
for angle in range(0, 181):
pwm.setServoAngle(0, angle)
sleep_ms(15)

for angle in range(180, -1, -1):
pwm.setServoAngle(0, angle)
sleep_ms(15)

Očekivani rezultat:

Nema serijskog izlaza. Hobi servo spojen na kanal 0 pomiče se od 0 do 180 stupnjeva i natrag, pri čemu svaki smjer traje nešto manje od 3 sekunde, a zatim se ponavlja.

Koristene funkcije​

PCA9685(i2c=None, address=PCA9685_DEFAULT_ADDRESS)returns None

Konstruktor. Postavlja zadanu PWM frekvenciju od 50 Hz, koju očekuju hobistički servoi. Ako se ne navede i2c, automatski otkriva I2C pinove na ESP32, ESP8266 i Soldered Dasduino CONNECTPLUS pločama.

ReturnsKonstruktora; nema vrijednost povrata.

Parametri

TipNazivOpis
I2Ci2cInicijalizirani objekt machine.I2C. Neobavezno; automatski se otkriva na poznatim pločama.
intaddressI2C adresa ploče. Zadano je PCA9685_DEFAULT_ADDRESS (0x40).
setServoPulseRange(minPulseUs, maxPulseUs)returns None

Konfigurira širinu pulsa u mikrosekundama koju setServoAngle() mapira na minimalni i maksimalni kut. Uskladite ovo s tehničkim podacima vašeg serva ako pri zadanim postavkama biblioteke ne dosegne svoj puni mehanički raspon.

ReturnsNišta.

Parametri

TipNazivOpis
intminPulseUsŠirina impulsa u mikrosekundama mapirana na minimalni kut. Zadano u biblioteci: 500 us.
intmaxPulseUsŠirina impulsa u mikrosekundama mapirana na maksimalni kut. Zadano u biblioteci: 2500 us.
setServoAngleRange(minAngle, maxAngle)returns None

Konfigurira raspon kutova, u stupnjevima, koji prihvaća setServoAngle().

ReturnsNišta.

Parametri

TipNazivOpis
floatminAngleKut u stupnjevima mapiran na minPulseUs. Zadano u biblioteci: 0.
floatmaxAngleKut u stupnjevima mapiran na maxPulseUs. Zadano u biblioteci: 180.
setServoAngle(channel, angle)returns bool

Pokreće hobi servo na zadanoj frekvenciji do kuta, ograničenog na konfigurirani raspon kutova. Unutar sebe pretvara kut u širinu impulsa i poziva setPWM() za vas. Pretpostavlja zadanu frekvenciju od 50 Hz postavljenu u konstruktoru.

ReturnsIstina pri uspjehu, lažna ako kanal nije u dometu.

Parametri

TipNazivOpis
intchannelBroj kanala, od 0 do 15.
floatangleKut u stupnjevima, ograničen na raspon postavljen pomoću setServoAngleRange().

Sklapanje​

setServoPulseRange() i setServoAngleRange() su jednokratni pozivi za postavljanje: pokrenite ih jednom, prije prve poziva setServoAngle(). Nakon toga, setServoAngle() obavlja matematičku pretvorbu kuta u širinu impulsa i poziva setPWM() umjesto vas, tako da nikada ne morate ručno izračunavati broj tikova za servo.

Ovaj primjer ovisi o zadanoj frekvenciji od 50 Hz konstruktora, što je ono što hobi servoi očekuju. Ako je nešto drugo na istoj ploči u međuvremenu pozvalo setPWMFreq() na drugu vrijednost, na primjer za LED na drugom kanalu, držite kanale servoa na 50 Hz umjesto da se oslanjate na setServoAngle() na drugoj frekvenciji.