-- This script scans for devices on the i2c bus local address = 0 local found = 0 local i2c_bus = i2c.get_device(0,0) i2c_bus:set_retries(10) function update() -- this is the loop which periodically runs i2c_bus:set_address(address) if i2c_bus:read_registers(0) then gcs:send_text(0, "Found I2C at " .. tostring(address)) found = found + 1 end address = address + 1 if address == 127 then address = 0 gcs:send_text(0, "Found " .. tostring(found) .. " devices") found = 0 end return update, 100 -- reschedules the loop end return update() -- run immediately before starting to reschedule