const std = @import("std");
const microzig = @import("microzig");
const pico = microzig.hal;
const pin_config = pico.pins.GlobalConfiguration{
.GPIO11 = .{ .name = "red", .function = .PWM5_B },
.GPIO12 = .{ .name = "green", .function = .PWM6_A },
.GPIO13 = .{ .name = "blue", .function = .PWM6_B },
};
const WRAP = 255;
const LOW = 0;
const HIGH = 255;
const SLEEP_MS = 500;
const pins = pin_config.pins();
pub fn main() void {
pin_config.apply();
var rand = std.Random.DefaultPrng.init(0);
const rnd = rand.random();
inline for (@typeInfo(@TypeOf(pins)).@"struct".fields) |field| {
const slice = @field(pins, field.name).slice();
slice.set_wrap(WRAP);
slice.enable();
}
while (true) {
inline for (@typeInfo(@TypeOf(pins)).@"struct".fields) |field| {
@field(pins, field.name).set_level(rnd.uintAtMostBiased(u8, 255));
}
pico.time.sleep_ms(SLEEP_MS);
}
}