const std = @import("std"); const pico = @import("microzig").hal; const WRAP = 4095 / 2; // ADC result is u12 const SLEEP_MS = 1000; const pin_config = pico.pins.GlobalConfiguration{ .GPIO16 = .{ .name = "led_blue", .function = .PWM0_A }, .GPIO17 = .{ .name = "led_green", .function = .PWM0_B }, .GPIO18 = .{ .name = "led_red", .function = .PWM1_A }, .GPIO26 = .{ .name = "pot_blue", .function = .ADC0 }, .GPIO27 = .{ .name = "pot_green", .function = .ADC1 }, .GPIO28 = .{ .name = "pot_red", .function = .ADC2 }, }; const pins = pin_config.pins(); pub fn main() void { pin_config.apply(); pins.led_blue.slice().set_wrap(WRAP); pins.led_blue.slice().enable(); pins.led_green.slice().set_wrap(WRAP); pins.led_green.slice().enable(); pins.led_red.slice().set_wrap(WRAP); pins.led_red.slice().enable(); while (true) { const blue = pico.adc.convert_one_shot_blocking(pins.pot_blue) catch unreachable; const green = pico.adc.convert_one_shot_blocking(pins.pot_green) catch unreachable; const red = pico.adc.convert_one_shot_blocking(pins.pot_red) catch unreachable; pins.led_blue.set_level(blue); pins.led_green.set_level(green); pins.led_red.set_level(red); pico.time.sleep_ms(SLEEP_MS); } }