45 int start(
int channel,
int frequency,
float duty_cycle = 0,
int chip = 2)
47 chippath =
"/sys/class/pwm/pwmchip" + std::to_string(chip);
49 std::string p =
chippath +
"/export";
50 FILE *
const fp = fopen(p.c_str(),
"w");
53 std::cerr <<
"PWM device does not exist. Make sure to add 'dtoverlay=pwm-2chan' to /boot/firmware/config.txt.\n";
56 const int r = fprintf(fp,
"%d", channel);
61 per = (int)1E9 / frequency;
94 const int dc = (int)round((
float)
per * (v / 100.0));
127 inline int writeSYS(std::string filename,
int value)
const
129 FILE *
const fp = fopen(filename.c_str(),
"w");
134 const int r = fprintf(fp,
"%d", value);
Class to create a Pulse Width Modulated (PWM) signal on the Raspberry PI 4 and 5.
Definition uPWM.h:34
void stop()
Stops the PWM.
Definition uPWM.h:71
std::string chippath
Definition uPWM.h:124
~RPI_PWM()
Destroy the RPI_PWM object.
Definition uPWM.h:82
std::string pwmpath
Definition uPWM.h:125
void setPeriod(int ns) const
Definition uPWM.h:101
int writeSYS(std::string filename, int value) const
Definition uPWM.h:127
int per
Definition uPWM.h:122
int start(int channel, int frequency, float duty_cycle=0, int chip=2)
Starts the PWM.
Definition uPWM.h:45
void enable() const
Definition uPWM.h:112
int setDutyCycle(float v) const
Sets the duty cycle in percent 0 - 100.
Definition uPWM.h:92
int setDutyCycleNS(int ns) const
Definition uPWM.h:106
void disable() const
Definition uPWM.h:117