use esp_idf_sys as _; // If using the `binstart` feature of `esp-idf-sys`, always keep this module imported
use esp_idf_hal::gpio::*;
use esp_idf_hal::peripheral::*;
use esp_idf_hal::peripherals::Peripherals;
use esp_idf_hal::units::Hertz;
//use ssd1306::Ssd1306;
use ssd1306::{prelude::*, I2CDisplayInterface, Ssd1306};
use embedded_graphics::{
mono_font::{ascii::FONT_6X10, MonoTextStyleBuilder},
pixelcolor::BinaryColor,
prelude::*,
text::{Baseline, Text},
};
use esp_idf_hal::delay::{FreeRtos, BLOCK};
use esp_idf_hal::i2c::*;
fn main() {
esp_idf_sys::link_patches();
#[allow(unused)]
let peripherals = Peripherals::take().unwrap();
let i2c = peripherals.i2c0;
let sda = peripherals.pins.gpio22;
let scl = peripherals.pins.gpio23;
println!("Starting a new I2C SSD1306 test");
let config = I2cConfig::new().baudrate(Hertz(100_000));
let mut i2c = I2cDriver::new(i2c, sda, scl, &config).unwrap();
let interface = I2CDisplayInterface::new(i2c);
let mut display = Ssd1306::new(interface, DisplaySize128x64, DisplayRotation::Rotate0)
.into_buffered_graphics_mode();
display.init().unwrap();
#[allow(unused)]
let button = peripherals.pins.gpio25;
let mut but = PinDriver::input(button).unwrap();
println!("Hello world!");
let text_style = MonoTextStyleBuilder::new()
.font(&FONT_6X10)
.text_color(BinaryColor::On)
.build();
Text::with_baseline("Hello world!", Point::zero(), text_style, Baseline::Top)
.draw(&mut display)
.unwrap();
Text::with_baseline("Hello Rust!", Point::new(0, 16), text_style, Baseline::Top)
.draw(&mut display)
.unwrap();
display.flush().unwrap();
let mut st = 1;
while(true) {
st = 1;
FreeRtos::delay_ms(300);
if but.is_high() {
st = 0;
}
println!("It's me, button:{}",st);
}
}