firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

fw16-epd-main: test text

+20 -3
+20 -3
fw16-epd-main/src/main.rs
··· 11 11 use core::cell::{RefCell, RefMut}; 12 12 use critical_section::Mutex; 13 13 use defmt::{debug, error, info, trace}; 14 + use embedded_graphics::mono_font::ascii::FONT_10X20; 15 + use embedded_graphics::mono_font::MonoTextStyle; 14 16 use embedded_graphics::pixelcolor::BinaryColor; 15 17 use embedded_graphics::prelude::*; 16 18 use embedded_graphics::primitives::{Line, PrimitiveStyle, PrimitiveStyleBuilder}; 19 + use embedded_graphics::text::Text; 17 20 use embedded_hal::digital::PinState; 18 21 use embedded_hal::i2c::I2c; 19 22 use embedded_hal_bus::i2c::RefCellDevice; ··· 158 161 let mut epd = Tp370pgh01::new(cs, IoPin::new(sda), sck, dc, busy, rst, timer, Rp2040PervasiveSpiDelays); 159 162 epd.hard_reset().unwrap(); 160 163 161 - let mut prev_image = [0u8; tp370pgh01::IMAGE_BYTES]; 162 - let mut image = [0u8; tp370pgh01::IMAGE_BYTES]; 164 + let mut prev_image = [0u8; IMAGE_BYTES]; 165 + let mut image = [0u8; IMAGE_BYTES]; 163 166 164 167 loop { 165 168 cortex_m::asm::wfe(); ··· 180 183 }).unwrap(); 181 184 182 185 186 + let mut draw_target = EpdDrawTarget::new(ProgramFunctionTable { 187 + write_image, 188 + refresh, 189 + refresh_fast, 190 + }); 191 + 192 + Text::new("Hello, World!", Point::new(20, 20), MonoTextStyle::new(&FONT_10X20, BinaryColor::On)) 193 + .draw(&mut draw_target) 194 + .unwrap(); 195 + draw_target.refresh(); 196 + 183 197 let programs = Programs::new(); 184 198 for _program in programs { 185 199 cortex_m::asm::delay(0); ··· 221 235 222 236 #[interrupt] 223 237 fn IO_IRQ_BANK0() { 238 + static mut FIRST_EVENT: bool = true; 224 239 static mut TOUCH_INT_PIN: Option<EpdTouchInt> = None; 225 240 static mut I2C: Option<I2C<I2C0, (I2CSda, I2CScl)>> = None; 226 241 static mut PREV_POS: Point = Point::new(0, 0); ··· 252 267 }; 253 268 TEMP.store(temp, Ordering::Relaxed); 254 269 255 - if let Some(int) = TOUCH_INT_PIN { 270 + if *FIRST_EVENT == true { 271 + *FIRST_EVENT = false; 272 + } else if let Some(int) = TOUCH_INT_PIN { 256 273 if int.interrupt_status(EdgeLow) { 257 274 let mut buf = [0u8; 9]; 258 275 i2c.write_read(0x38u8, &[0x00], &mut buf).unwrap();