Crates.io | gledopto |
lib.rs | gledopto |
version | 0.8.0 |
created_at | 2025-05-01 10:53:37.484126+00 |
updated_at | 2025-08-26 10:55:23.281374+00 |
description | no-std, no-alloc LED control library for 1D, 2D, and 3D layouts |
homepage | https://github.com/ahdinosaur/blinksy |
repository | https://github.com/ahdinosaur/blinksy |
max_upload_size | |
id | 1656109 |
size | 63,332 |
gledopto
Rust no-std embedded board support crate for Gledopto ESP32 Digital LED controllers.
Uses Blinksy: an LED control library for 1D, 2D, and 3D LED setups, inspired by FastLED and WLED.
gl_c_016wl_d
gl_c_017wl_d
Select the board by using its respective feature.
blinksy
https://github.com/user-attachments/assets/1c1cf3a2-f65c-4152-b444-29834ac749ee
#![no_std]
#![no_main]
use blinksy::{
layout::{Shape2d, Vec2},
layout2d,
patterns::noise::{noise_fns, Noise2d, NoiseParams},
ControlBuilder,
};
use gledopto::{apa102, board, bootloader, elapsed, main};
bootloader!();
#[main]
fn main() -> ! {
let p = board!();
layout2d!(
Layout,
[Shape2d::Grid {
start: Vec2::new(-1., -1.),
horizontal_end: Vec2::new(1., -1.),
vertical_end: Vec2::new(-1., 1.),
horizontal_pixel_count: 16,
vertical_pixel_count: 16,
serpentine: true,
}]
);
let mut control = ControlBuilder::new_2d()
.with_layout::<Layout>()
.with_pattern::<Noise2d<noise_fns::Perlin>>(NoiseParams {
..Default::default()
})
.with_driver(apa102!(p))
.build();
control.set_brightness(0.1);
loop {
let elapsed_in_ms = elapsed().as_millis();
control.tick(elapsed_in_ms).unwrap();
}
}
https://github.com/user-attachments/assets/703fe31d-e7ca-4e08-ae2b-7829c0d4d52e
#![no_std]
#![no_main]
use blinksy::{
layout::Layout1d,
layout1d,
patterns::rainbow::{Rainbow, RainbowParams},
ControlBuilder,
};
use gledopto::{board, bootloader, elapsed, main, ws2812};
bootloader!();
#[main]
fn main() -> ! {
let p = board!();
layout1d!(Layout, 60 * 5);
let mut control = ControlBuilder::new_1d()
.with_layout::<Layout>()
.with_pattern::<Rainbow>(RainbowParams {
..Default::default()
})
.with_driver(ws2812!(p, Layout::PIXEL_COUNT))
.build();
control.set_brightness(0.2);
loop {
let elapsed_in_ms = elapsed().as_millis();
control.tick(elapsed_in_ms).unwrap();
}
}
To quickstart a project, see blinksy-quickstart-gledopto
.
As the Gledopto controller is an ESP32, if you want to get started here are some more resources to help:
And in case they are helpful: