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