code.py
 1  # SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  """CircuitPython Essentials I2C possible pin-pair identifying script"""
 6  import board
 7  import busio
 8  from microcontroller import Pin
 9  
10  
11  def is_hardware_I2C(scl, sda):
12      try:
13          p = busio.I2C(scl, sda)
14          p.deinit()
15          return True
16      except ValueError:
17          return False
18      except RuntimeError:
19          return True
20  
21  
22  def get_unique_pins():
23      exclude = ['NEOPIXEL', 'APA102_MOSI', 'APA102_SCK']
24      pins = [pin for pin in [
25          getattr(board, p) for p in dir(board) if p not in exclude]
26              if isinstance(pin, Pin)]
27      unique = []
28      for p in pins:
29          if p not in unique:
30              unique.append(p)
31      return unique
32  
33  
34  for scl_pin in get_unique_pins():
35      for sda_pin in get_unique_pins():
36          if scl_pin is sda_pin:
37              continue
38          if is_hardware_I2C(scl_pin, sda_pin):
39              print("SCL pin:", scl_pin, "\t SDA pin:", sda_pin)