lego-powered-up 0.1.0

Control Lego PoweredUp hubs and devices
Documentation

lego-powered-up

This is a crate for remotely controlling Lego PoweredUp hubs and devices over Bluetooth. It provides a simple synchronous interface, with the intention that arbitrarily complex programs may be written in Rust.

Example

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

fn main() -> anyhow::Result<()> {
println!("Listening for hubs...");
let pu = PoweredUp::init()?;
let hub = pu.wait_for_hub()?;

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

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

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

sleep(Duration::from_secs(3));

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

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

println!("Done!");

Ok(())
}