embedded-graphics-sparklines 0.1.0

Sparklines for rust's embedded-graphics
Documentation

Contributors Forks Stargazers Issues Build Status MIT License LinkedIn

About The Project

This library is a Rust implementation of ESParklines library which is extemely useful for creating real-time graphs for use with small embedded systems screeens.

This library is designed to be as simple as possible. It is responsible for:

  • holding a buffer of pre-defined size of numeric data type
  • renders sparklines using a passed-in function to draw lines
  • is display-driver independent as you can provide any drawing function
  • works with embedded-graphics simulator so you can quickly iterate on you dev machine

Built With

Getting Started

Make sure you have your rust environment configurated

Installation

  1. Add library to your Cargo.toml

    ...
    [dependencies]
    embedded-graphics-sparklines = "0.1.0"
    
  2. Use the library in you code

    
    let mut display: SimulatorDisplay<BinaryColor> = SimulatorDisplay::new(Size::new(240, 135));
    let bbox = Rectangle::new(Point::new(0, 26), Size::new(240, 90));
    let draw_fn = |lastp, p| Line::new(lastp, p);
    
    // create sparkline object
    let mut sparkline = Sparkline::new(
        bbox, // position and size of the sparkline
        32,   // max samples to store in memory (and display on graph)
        BinaryColor::On,
        1, // stroke size
        draw_fn,
    );
    
    let output_settings = OutputSettingsBuilder::new()
        .theme(BinaryColorTheme::OledBlue)
        .build();
    let mut window = Window::new("Sparkline", &output_settings);
    
    loop {
      let val = rand::thread_rng().gen_range(0..100);
      sparkline.add(val);
      sparkline.draw(&mut display)?;
    
      window.update(&display);
      thread::sleep( Duration::from_millis(100);
    }
    
  3. Experiment and have fun! :relieved: See main.rs if you want to run a quick demo.

Quickstart

  1. Make sure you've got cargo set up
  2. Install cargo binary crate to be able to test easily on your computer
    $ cargo install embedded-graphics-sparklines
    
  3. Run the provided binary example with simulator display
    $ embedded-graphics-sparklines --features build-binary
    
  4. You should see an output similar to the followig one

demo screenshot

Roadmap

  • add tests
  • add rustdocs
  • CI integration with GithHub Actions
  • better error generation & handling

See the open issues for a full list of proposed features (and known issues).

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Bernard Kobos - @bkobos - bkobos@gmail.com

Project Link: https://github.com/bernii/embedded-graphics-sparklines

Acknowledgments

  • ESParklines project which this is based on