3 unstable releases
0.2.0 | Feb 24, 2024 |
---|---|
0.1.0 | Feb 23, 2024 |
#477 in Embedded development
17KB
491 lines
A reactive runtime for embedded systems
use actuate::{Diagram, PidController};
struct State(f64);
struct TargetState(f64);
struct StatePidController(PidController);
fn state_pid_controller(
StatePidController(pid): &mut StatePidController,
State(state): &mut State,
TargetState(target): &TargetState,
) {
pid.control(state, target)
}
fn debugger(State(state): &State) {
dbg!(state);
}
fn main() {
let mut diagram = Diagram::builder()
.add_input(State(1.))
.add_input(TargetState(5.))
.add_state(StatePidController(PidController::default()))
.add_system(state_pid_controller)
.add_system(debugger)
.build();
for _ in 0..100 {
diagram.run();
}
}
Dependencies
~2MB
~25K SLoC