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 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​

Select Board
Basic_PWM.ino
#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 None

Nativni 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

TipNazivOpis
uint8_t_addressI2C adresa ploče. Zadano je PCA9685_DEFAULT_ADDRESS (0x40).
begin()returns void

Inicijalizira 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 void

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

ReturnsNišta.

Parametri

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

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.

ReturnsNišta.

Parametri

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