#lego #control #devices #ble #hubs #notifications #powered-up

lego-powered-up

控制乐高Power-Up集线器和设备

4个版本 (破坏性)

0.4.0 2024年1月7日
0.3.0 2022年12月10日
0.2.0 2021年12月6日
0.1.0 2021年12月5日

#190 in 硬件支持


用于 bricks

MPL-2.0 许可证

225KB
5.5K SLoC

Rust乐高Power-Up通信库

示例

查看示例目录了解更多!

use lego_powered_up::{notifications::Power, PoweredUp};
use std::time::Duration;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    println!("Listening for hubs...");
    let mut pu = PoweredUp::init().await?;
    let hub = pu.wait_for_hub().await?;

    println!("Connecting to hub `{}`", hub.name);
    let hub = pu.create_hub(&hub).await?;

    println!("Change the hub LED to green");
    let mut hub_led = hub.port(lego_powered_up::hubs::Port::HubLed).await?;
    hub_led.set_rgb(&[0, 0xff, 0]).await?;

    println!("Run motors");
    let mut motor_c = hub.port(lego_powered_up::hubs::Port::C).await?;
    let mut motor_d = hub.port(lego_powered_up::hubs::Port::D).await?;
    motor_c.start_speed(50, Power::Cw(50)).await?;
    motor_d.start_speed(50, Power::Cw(50)).await?;

    tokio::time::sleep(Duration::from_secs(3)).await;

    println!("Stop motors");
    motor_c.start_speed(0, Power::Float).await?;
    motor_d.start_speed(0, Power::Brake).await?;

    println!("Disconnect from hub `{}`", hub.name().await?);
    hub.disconnect().await?;

    println!("Done!");

    Ok(())
}

贡献

欢迎贡献,特别是在以下领域

  • 错误报告和功能请求
  • 除了Technic Medium Hub以外的集线器支持(目前我没有其他类型进行测试)
  • 除了简单的电机和集线器LED以外的外围设备支持
  • 良好的API来控制例如电机位置
  • 更多示例来展示我们可以做的事情
  • 客户端实现
  • #![no_std] 支持(控制器 & 客户端)
  • 在非Linux操作系统上测试/移植,例如Windows & Mac

许可证

本库在Mozilla Public License 2.0条款下提供。

示例目录中的示例专属于公有领域

依赖

~5–34MB
~503K SLoC