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 gradivna 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
#include "PCA9685-SOLDERED.h"
PCA9685 pwm;
void setup()
{
pwm.begin();
pwm.setPWMFreq(1000); // fast PWM for LEDs/general outputs, not servos
}
void loop()
{
for (uint16_t duty = 0; duty <= 4095; duty += 32)
{
pwm.setPWM(0, 0, duty);
delay(20);
}
}
Očekivani rezultat:
Nema serijskog izlaza. Ciklusi rada kanala 0 povećavaju se 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(uint8_t _address = PCA9685_DEFAULT_ADDRESS)returns NoneNativni konstruktor. I2C adresa ploče je fiksirana pomoću kratkospojnika JP1–JP6, stoga navedite adresu koja odgovara postavkama vaše ploče ili je ostavite na zadanoj vrijednosti.
ReturnsKonstruktor; nema vrijednost povrata.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | _address | I2C adresa ploče. Zadano je PCA9685_DEFAULT_ADDRESS (0x40). |
begin()returns voidInicijalizira PCA9685 preko I2C na adresi postavljene u konstruktoru: aktivira oscilator, omogućuje ALLCALL adresu i postavlja zadanu PWM frekvenciju od 50 Hz. Pozovite ga jednom u setup().
ReturnsNišta.
Parametri
Ova funkcija ne prima parametre.
setPWMFreq(float freq)returns voidPostavlja PWM frekvenciju koju dijele svih 16 kanala. Ograničeno na raspon čipa od 24 do 1526 Hz.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
float | freq | Poželjna frekvencija u Hz, ograničena na 24-1526 Hz. |
setPWM(uint8_t channel, uint16_t on, uint16_t off)returns voidPostavlja 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.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | channel | Broj kanala, od 0 do 15. |
uint16_t | on | Broj tikova (0-4095) pri kojem se izlaz uključuje. |
uint16_t | off | Broj tikova (0-4095) pri kojem se izlaz isključuje. |
Sklapanje
begin() postavlja zadano 50 Hz, ali ovaj primjer odmah povećava tu vrijednost na
1000 Hz pomoću setPWMFreq(), što bolje odgovara LED-u ili opterećenju općeg PWM-a
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 pulsa, pa nagib off od 0 do 4064 nagiba izlaz s potpuno isključenog na gotovo potpuno uključeno.
Da biste zadržali kanal na jednoj vrijednosti umjesto da ga postupno mijenjate, pozovite setPWM() jednom s željenim vrijednostima tikova i prestanite ga ponovno pozivati; PCA9685 nastavlja samostalno generirati taj signal sve dok ga ne promijenite.