#![no_std]
#![no_main]
// https://docs.rs/ssd1306/0.9.0/ssd1306/index.html
// https://docs.esp-rs.org/esp-hal/esp-hal/0.23.1/esp32c3/esp_hal/i2c/master/index.html
use core::fmt::Write;
use esp_hal::clock::CpuClock;
use esp_hal::i2c::master::I2c;
use esp_hal::main;
use esp_hal::time::{Duration, Instant};
use ssd1306::{prelude::*, I2CDisplayInterface, Ssd1306};
#[panic_handler]
fn panic(_: &core::panic::PanicInfo) -> ! {
loop {}
}
#[main]
fn main() -> ! {
// cargo install esp-generate
// esp-generate --chip=esp32c3
// generator version: 0.3.1
let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max());
let _peripherals = esp_hal::init(config);
let i2c = I2c::new(
_peripherals.I2C0,
esp_hal::i2c::master::Config::default(),
)
.unwrap()
.with_sda(_peripherals.GPIO1)
.with_scl(_peripherals.GPIO2);
let interface = I2CDisplayInterface::new(i2c);
let mut display = Ssd1306::new(interface, DisplaySize128x64, DisplayRotation::Rotate0)
.into_terminal_mode();
display.init().unwrap();
display.clear().unwrap();
loop {
let delay_start = Instant::now();
while delay_start.elapsed() < Duration::from_millis(500) {}
display.write_str(unsafe { core::str::from_utf8_unchecked(&[97]) });
}
}
Loading
esp32-c3-devkitm-1
esp32-c3-devkitm-1