clock_generator/firmware/rust/src/screen/splash.rs
finga fdd1f4636d
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
fw-rust: Refactor everything
Remove avr-eeprom dependency for now and introduce events.
2022-03-30 22:59:24 +02:00

49 lines
1.3 KiB
Rust

use super::Draw;
use crate::{
assets::{ONDERS_ORG, SACRED_CHAO},
lcd::Lcd,
};
use atmega_hal::{clock::MHz8, delay::Delay};
use embedded_hal::{blocking::delay::DelayMs, spi::FullDuplex};
use nb::block;
pub struct Splash;
impl Draw for Splash {
fn draw(&self, lcd: &mut Lcd) {
let mut delay = Delay::<MHz8>::new();
for (i, page) in SACRED_CHAO.iter().enumerate() {
lcd.move_cursor(31, 1 + i as u8);
// TODO: This delay fixes issues, try find a better solution
delay.delay_ms(1_u8);
lcd.cd.set_high();
for segment in page {
block!(lcd.spi.send(*segment)).unwrap();
}
// TODO: This delay fixes issues, try find a better solution
delay.delay_ms(1_u8);
lcd.cd.set_low();
}
for (i, page) in ONDERS_ORG.iter().enumerate() {
lcd.move_cursor(27, 6 + i as u8);
// TODO: This delay fixes issues, try find a better solution
delay.delay_ms(1_u8);
lcd.cd.set_high();
for segment in page {
block!(lcd.spi.send(*segment)).unwrap();
}
// TODO: This delay fixes issues, try find a better solution
delay.delay_ms(1_u8);
lcd.cd.set_low();
}
}
}