Created
September 12, 2023 17:14
-
-
Save IrregularShed/e5ab16142f56a3d2f56b4c09b3b4e8f9 to your computer and use it in GitHub Desktop.
CircuitPython I2C scan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-FileCopyrightText: 2017 Limor Fried for Adafruit Industries | |
# | |
# SPDX-License-Identifier: MIT | |
"""CircuitPython I2C Device Address Scan""" | |
# If you run this and it seems to hang, try manually unlocking | |
# your I2C bus from the REPL with | |
# >>> import board | |
# >>> board.I2C().unlock() | |
import time | |
import board | |
# To use default I2C bus (most boards) | |
i2c = board.I2C() # uses board.SCL and board.SDA | |
# i2c = board.STEMMA_I2C() # For using the built-in STEMMA QT connector on a microcontroller | |
# To create I2C bus on specific pins | |
# import busio | |
# i2c = busio.I2C(board.SCL1, board.SDA1) # QT Py RP2040 STEMMA connector | |
# i2c = busio.I2C(board.GP1, board.GP0) # Pi Pico RP2040 | |
while not i2c.try_lock(): | |
pass | |
try: | |
while True: | |
print( | |
"I2C addresses found:", | |
[hex(device_address) for device_address in i2c.scan()], | |
) | |
time.sleep(2) | |
finally: # unlock the i2c bus when ctrl-c'ing out of the loop | |
i2c.unlock() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment