Skip to main content

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 None

Konstruktor. 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

TipNazivOpis
I2Ci2cInicijalizirani objekt machine.I2C. Opcionalno; automatski se otkriva na poznatim pločama.
intaddressI2C adresa ploče. Zadano je PCA9685_DEFAULT_ADDRESS (0x40).
setPWMFreq(freq)returns bool

Postavlja PWM frekvenciju koju dijele svi 16 kanala. Ograničeno na raspon čipa od 24 do 1526 Hz.

ReturnsIstina o uspjehu.

Parametri

TipNazivOpis
floatfreqPoželjna frekvencija u Hz, ograničena na 24-1526 Hz.
setPWM(channel, on, off)returns bool

Postavlja 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

TipNazivOpis
intchannelBroj kanala, od 0 do 15.
intonBroj tikova (0-4095) pri kojem se izlaz uključuje.
intoffBroj 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.