#![no_std]
#![no_main]
use esp_backtrace as _;
use esp_hal::{entry, peripherals,};
use esp_hal::gpio::{AnyPin, DriveStrength, Io, Level, Output};
use esp_hal::i2c::I2C;
use esp_hal::prelude::*;
use esp_hal::timer::timg::TimerGroup;
use esp_hal::xtensa_lx::timer::delay;
use esp_hal::{
clock::ClockControl, delay::Delay, peripherals::Peripherals, system::SystemControl,
};
#[entry]
fn main() -> ! {
esp_println::logger::init_logger_from_env();
let peripherals = Peripherals::take();
let system = SystemControl::new(peripherals.SYSTEM);
let io = Io::new(peripherals.GPIO, peripherals.IO_MUX);
let clocks = ClockControl::max(system.clock_control).freeze();
let delay = Delay::new(&clocks);
let sda = io.pins.gpio8;
let scl = io.pins.gpio9;
let mut i2c = I2C::new(
peripherals.I2C0,
sda,
scl,
100u32.kHz(),
&clocks,
);
for address in 1..128 {
let mut data = [0u8; 6];
delay.delay(20.millis());
let mut buffer = [0];
let result = i2c.read(address as u8, &mut buffer);
match result {
Ok(_) => log::info!("Device Found at Address {}", address as u8),
Err(_) => {
log::info!("No Device Found");
log::info!("{}", buffer[0]);
},
}
}
loop {
}
}