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 NoneKonstruktor. 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
| Tip | Naziv | Opis |
|---|---|---|
I2C | i2c | Inicijalizirani objekt machine.I2C. Neobavezno; automatski se otkriva na poznatim pločama. |
int | address | I2C adresa ploče. Zadano je PCA9685_DEFAULT_ADDRESS (0x40). |
setServoPulseRange(minPulseUs, maxPulseUs)returns NoneKonfigurira š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
| Tip | Naziv | Opis |
|---|---|---|
int | minPulseUs | Širina impulsa u mikrosekundama mapirana na minimalni kut. Zadano u biblioteci: 500 us. |
int | maxPulseUs | Širina impulsa u mikrosekundama mapirana na maksimalni kut. Zadano u biblioteci: 2500 us. |
setServoAngleRange(minAngle, maxAngle)returns NoneKonfigurira raspon kutova, u stupnjevima, koji prihvaća setServoAngle().
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
float | minAngle | Kut u stupnjevima mapiran na minPulseUs. Zadano u biblioteci: 0. |
float | maxAngle | Kut u stupnjevima mapiran na maxPulseUs. Zadano u biblioteci: 180. |
setServoAngle(channel, angle)returns boolPokreć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
| Tip | Naziv | Opis |
|---|---|---|
int | channel | Broj kanala, od 0 do 15. |
float | angle | Kut 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.