Sirova PWM kontrola
Što ovaj primjer prikazuje
Postavljanje sirovih brojača uključivanja/isključivanja kanala i njihovo postepeno povećavanje tijekom vremena. Ovo je osnovna građevna jedinica ploče: svaki poziv višeg nivoa, uključujući pomoćnik za kut serva na sljedećoj stranici, na kraju poziva setPWM().
Primjer koda
from pca9685 import PCA9685
from utime import sleep_ms
pwm = PCA9685()
pwm.setPWMFreq(1000) # fast PWM for LEDs/general outputs, not servos
while True:
for duty in range(0, 4096, 32):
pwm.setPWM(0, 0, duty)
sleep_ms(20)
Očekivani rezultat:
Nema serijskog izlaza. Ciklus rada kanala 0 raste od 0 do 4064 u koracima od 32, pri čemu svaki uspon traje nešto više od 2,5 sekunde, a zatim se ponavlja.
Koristene funkcije
PCA9685(i2c=None, address=PCA9685_DEFAULT_ADDRESS)returns NoneKonstruktor. Ako se I2C ne navede, automatski otkriva I2C pinove (SCL 22, SDA 21) na ESP32, ESP8266 i Soldered Dasduino CONNECTPLUS pločama te baca iznimku na bilo kojoj drugoj ploči. Proslijedite vlastiti inicijalizirani objekt Machine.I2C kako biste koristili drugačiji par pinova ili ploču.
ReturnsKonstruktor; nema povratne vrijednosti.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
I2C | i2c | Inicijalizirani objekt machine.I2C. Opcionalno; automatski se otkriva na poznatim pločama. |
int | address | I2C adresa ploče. Zadano je PCA9685_DEFAULT_ADDRESS (0x40). |
setPWMFreq(freq)returns boolPostavlja PWM frekvenciju koju dijele svi 16 kanala. Ograničeno na raspon čipa od 24 do 1526 Hz.
ReturnsIstina o uspjehu.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
float | freq | Poželjna frekvencija u Hz, ograničena na 24-1526 Hz. |
setPWM(channel, on, off)returns boolPostavlja sirovi broj tikova pri kojima se izlaz kanala uključuje i isključuje unutar jednog PWM razdoblja (4096 tikova). Koristi se izravno za LED diode i opći PWM; setServoAngle() na sljedećoj stranici je praktični omotač za isti poziv.
ReturnsIstina pri uspjehu, lažna ako kanal nije u dometu.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | channel | Broj kanala, od 0 do 15. |
int | on | Broj tikova (0-4095) pri kojem se izlaz uključuje. |
int | off | Broj tikova (0-4095) pri kojem se izlaz isključuje. |
Sklapanje
Konstruktor postavlja zadano 50 Hz, ali ovaj primjer odmah povećava tu vrijednost
na 1000 Hz pomoću setPWMFreq(), što bolje odgovara LED-u ili općenitom PWM opterećenju
nego što to očekuju hobistički servoi na 50 Hz. setPWM() zatim postavlja oba ruba pulsa: s on fiksiranim na 0, samo off kontrolira omjer dužine, pa nagib off od 0 do 4064 nagiba izlaz s potpuno isključenog na gotovo potpuno uključenog.
Da biste zadržali kanal na jednoj vrijednosti umjesto da ga postupno mijenjate, pozovite setPWM() jednom s vrijednostima koje želite i prestanite ga ponovno zvati; PCA9685 nastavlja samostalno generirati taj signal sve dok ga ne promijenite.