#include <Arduino.h>
#include "pico/stdlib.h"
#include "hardware/pwm.h"
#define PWM_PIN 2 // Choose the GPIO pin for PWM output
void setup_pwm() {
gpio_set_function(PWM_PIN, GPIO_FUNC_PWM);
uint slice_num = pwm_gpio_to_slice_num(PWM_PIN);
pwm_set_wrap(slice_num, 65535); // PWM frequency = clock_freq / wrap
pwm_set_clkdiv(slice_num, 1); // PWM clock divider (optional)
}
void set_pwm_duty_cycle(int duty_cycle) {
uint slice_num = pwm_gpio_to_slice_num(PWM_PIN);
pwm_set_chan_level(slice_num, PWM_PIN, duty_cycle);
}
void setup() {
Serial.begin(9600);
setup_pwm();
}
void loop() {
// Generate PWM with duty cycle ranging from 0 to 65535 (16-bit)
for (int duty_cycle = 0; duty_cycle <= 65535; duty_cycle++) {
set_pwm_duty_cycle(duty_cycle);
delay(10); // Adjust as needed for PWM frequency
}
}