use esp_idf_svc::wifi::*;
use esp_idf_svc::http::server::*;
use esp_idf_svc::eventloop::*;
use esp_idf_hal::prelude::*;
use esp_idf_hal::i2c::*;
use esp_idf_hal::gpio::*;
use esp_idf_hal::adc::*;
use ds18b20::Ds18b20;
use lcd1602_rs::Lcd1602;

fn main() {
    esp_idf_sys::link_patches();
    let peripherals = Peripherals::take().unwrap();
    let sysloop = EspSystemEventLoop::take().unwrap();


    // Inisialisasi I2C untuk LCD
    let i2c = I2cDriver::new(
        peripherals.i2c0,
        peripherals.pins.gpio21,
        peripherals.pins.gpio22,
        &I2cConfig::default(),
    ).unwrap();
    let mut lcd = Lcd1602::new(i2c, 0x27, &mut std::thread::sleep).unwrap();
    lcd.init().unwrap();
    lcd.set_backlight(true).unwrap();
    

    loop {
        let temp = sensor.read_temperature().unwrap();
        let p1 = pot1.read().unwrap();
        let p2 = pot2.read().unwrap();
        let p3 = pot3.read().unwrap();

        lcd.clear().unwrap();
        lcd.set_cursor(0, 0).unwrap();
        lcd.write_str(&format!("Temp: {:.2}C", temp)).unwrap();
        lcd.set_cursor(0, 1).unwrap();
        lcd.write_str(&format!("P1:{} P2:{} P3:{}", p1, p2, p3)).unwrap();
        
        std::thread::sleep(std::time::Duration::from_secs(2));
    }
}