Skip to main content

Control Hardware PWM on the Raspberry Pi

Project description

rpi hardware pwm

CI status PyPI version

Access the hardware PWM of a Raspberry Pi with Python. More lightweight than alternatives.

Installation

  1. On the Raspberry Pi, add dtoverlay=pwm-2chan to /boot/config.txt. This defaults to GPIO_18 as the pin for PWM0 and GPIO_19 as the pin for PWM1.
    • Alternatively, you can change GPIO_18 to GPIO_12 and GPIO_19 to GPIO_13 using dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4.
    • On the Pi 5, use channels 0 and 1 to control GPIO_12 and GPIO13, respectively; use channels 2 and 3 to control GPIO_18 and GPIO_19, respectively
    • On all other models, use channels 0 and 1 to control GPIO-18 and GPIO_19, respectively
  2. Reboot your Raspberry Pi.
    • You can check everything is working on running lsmod | grep pwm and looking for pwm_bcm2835
  3. Install this library: sudo pip3 install rpi-hardware-pwm

Examples

For Rpi 1,2,3,4, use chip=0; For Rpi 5, use chip=2

from rpi_hardware_pwm import HardwarePWM

pwm = HardwarePWM(pwm_channel=0, hz=60, chip=0)
pwm.start(100) # full duty cycle

pwm.change_duty_cycle(50)
pwm.change_frequency(25_000)

pwm.stop()

History

The original code is from jdimpson/syspwm, We've updated it to Python3 and made it look like the RPi.GPIO library's API (but more Pythonic than that.), and we use it in Pioreactor bioreactor system.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

rpi_hardware_pwm-0.2.2-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file rpi_hardware_pwm-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for rpi_hardware_pwm-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 81ecbb876952b910c6bebe3b0a003310bb9ac0a86d913938fb3f5e1acc4ccdb4
MD5 1f76006edd5c5b8e6040ef8fa46fe243
BLAKE2b-256 992a300e1c9bd2e7aac9c12ed8401732798179396d2a69152585dce24da43bb3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page