Examples ======== Here are example use cases for `GPIOManager`, `PWMManager`, and `I2CManager`. GPIOManager Examples -------------------- - **Basic GPIO Input Pin Setup with Callback**:: import gpio_manager def button_pressed_callback(channel): print("Button was pressed on channel", channel) # Set up GPIO Manager gpio = gpio_manager.GPIOManager() # Configure pin 17 as input with a pull-up resistor gpio.add_input_pin(17, pull_resistor_state=gpio_manager.InternPullResistorState.PULLUP) # Assign callback to the pin for falling edge detection gpio.assign_callback(17, button_pressed_callback, trigger_edge=gpio_manager.TriggerEdge.FALLING) # Wait for an edge event (button press) gpio.wait_for_edge(17) - **GPIO Output Pin Setup and State Change**:: import gpio_manager # Set up GPIO Manager gpio = gpio_manager.GPIOManager() # Configure pin 18 as an output pin with an initial LOW state gpio.add_output_pin(18, pin_state=gpio_manager.PinState.LOW) # Set pin 18 to HIGH gpio.set_output_pin(18, gpio_manager.PinState.HIGH) PWMManager Examples ------------------- - **PWM Setup and Basic LED Brightness Control**:: import gpio_manager # Set up PWM Manager pwm = gpio_manager.PWMManager() # Set up PWM on channel 0, 1000 Hz frequency, and 50% duty cycle pwm.setup_pwm_channel(0, frequency_hz=1000, duty_cycle=50) # Start PWM on channel 0 pwm.start_pwm_channel(0) # Change duty cycle to 75% pwm.set_duty_cycle(0, 75) # Stop PWM on channel 0 pwm.stop_pwm_channel(0) - **RGB LED with PWM Control**:: import gpio_manager import time # Set up PWM Manager pwm = gpio_manager.PWMManager() # Set up RGB LED pins with PWM (channels 0, 1, 2) pwm.setup_pwm_channel(0, frequency_hz=1000) pwm.setup_pwm_channel(1, frequency_hz=1000) pwm.setup_pwm_channel(2, frequency_hz=1000) # Function to cycle RGB colors def cycle_rgb(): for duty_cycle in range(0, 101, 5): pwm.set_duty_cycle(0, duty_cycle) # Red pwm.set_duty_cycle(1, 100 - duty_cycle) # Green pwm.set_duty_cycle(2, (duty_cycle + 50) % 100) # Blue time.sleep(0.05) # Start PWM on channels 0, 1, 2 pwm.start_pwm_channel(0) pwm.start_pwm_channel(1) pwm.start_pwm_channel(2) # Cycle through colors cycle_rgb() # Stop PWM on all channels pwm.stop_pwm_channel(0) pwm.stop_pwm_channel(1) pwm.stop_pwm_channel(2) I2CManager Examples ------------------- - **Basic I2C Communication**:: import gpio_manager # Set up I2C Manager i2c = gpio_manager.I2CManager() # Open I2C bus i2c.open(bus=1) # Write a byte to a slave device at address 0x20 i2c.write_byte(0x20, 0xFF) # Read a byte from the slave device data = i2c.read_byte(0x20) print("Received byte:", data) # Close the I2C bus i2c.close() - **I2C Block Read and Write**:: import gpio_manager # Set up I2C Manager i2c = gpio_manager.I2CManager() # Open I2C bus i2c.open(bus=1) # Write a block of bytes with a command i2c.block_write(0x20, 0x01, b'\x01\x02\x03') # Read a block of data with a command data = i2c.block_read(0x20, 0x01, 3) print("Received block:", data) # Close the I2C bus i2c.close()