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);
}
}