Making a better secondary display

This commit is contained in:
2020-05-29 23:26:43 +02:00
parent 19d4acdfd6
commit b66fb03b8f
3 changed files with 88 additions and 13 deletions

View File

@@ -18,8 +18,11 @@ mod forms;
fn main() -> Result<(), Box<dyn Error>> {
let mut screen = forms::Screen::new(200, 200);
let mut course_screen = forms::Screen::new(200, 200);
let mut navigation_screen = forms::Screen::new(160,320);
let mut loader = forms::Loader::new("/root/helms-display".to_string());
let c = loader.load_form("compass-rose.svg").unwrap();
let b = loader.load_form("boat.svg").unwrap();
let cog = loader.load_form("cog.svg").unwrap();
@@ -37,20 +40,29 @@ fn main() -> Result<(), Box<dyn Error>> {
let mut e = ilidisplay::IliDisplay::init()?;
e.init_chip();
e.turn_on();
for i in 0..10 {
let rad = (i as f32) * 2.0*PI / 100.0;
screen.clear();
screen.render(&cog, -rad*2.0, 500, 500);
screen.render(&wind, rad*2.0, 500, 500);
screen.render(&c, rad, 500, 500);
screen.render(&b, 0.0, 500, 500);
e.put_image(&(screen.image), ((240-100), (160-100)));
}
screen.save();
// draw_filled_rect_mut(&mut img, Rect::at(0,0).of_size(480, 320), Rgb([0, 0, 0]));
course_screen.clear();
let rad = (6 as f32) * 2.0*PI / 100.0;
course_screen.clear();
course_screen.render(&cog, -rad*2.0, 500, 500);
course_screen.render(&wind, rad*2.0, 500, 500);
course_screen.render(&c, rad, 500, 500);
course_screen.render(&b, 0.0, 500, 500);
e.put_image(&(course_screen.image), (160, (160-100)));
navigation_screen.clear();
navigation_screen.text(&font, "SOG", 32.0, 5, 5);
navigation_screen.text(&font, "speed over ground", 12.0, 5, 38);
let speed_over_ground = 5.0; // in m/s
let speed_over_ground = speed_over_ground * 1.9438612860586; // now in nautic miles per hour
navigation_screen.text_rj(&font, &format!("{:.1}", speed_over_ground).as_str(), 32.0, 138, 5);
navigation_screen.fraction(&font, "nm", "h", 14.0, 140, 6);
e.put_image(&(navigation_screen.image), (0, 0));
navigation_screen.save();
println!("You should see image now, sleeping for 5s");
println!("Display has been rendered now, sleeping for 5s");
thread::sleep(Duration::from_millis(5000));
e.turn_off();
Ok(())