Skip to content

Scanner le bus I2C

Ce que l'on va faire ici

Nous allons voir ici comment scanner le bus I2C. Ceci est intéressant et nécessaire si vous avez plusieurs modules i2C présents sur le bus i2C et que vous voulez connaître leur adresses respectives. Dans le cas où vous n'avez qu'un seul module, c'est également intéressant.

Le montage

Au moins 1 dispositif I2C connecté sur le port I2C0 de la carte Pi Pico. Par exemple ici un module OLED 128x64.

Le code

# Scanner i2c en MicroPython | MicroPython i2c scanner
# Renvoi l'adresse en decimal et hexa de chaque device connecte sur le bus i2c
# Return decimal and hexa adress of each i2c device
# adapté de https://projetsdiy.fr - https://diyprojects.io (dec. 2017)

import machine
i2c = machine.I2C(0, scl=machine.Pin(17), sda=machine.Pin(16))  # port i2C0 sur GP16 (sda) et GP17 (scl)

print('Scan i2c bus...')
devices = i2c.scan()

if len(devices) == 0:
  print("No i2c device !")
else:
  print('i2c devices found:',len(devices))

  for device in devices:  
    print("Decimal address: ",device," | Hexa address: ",hex(device))

Ce qui donne dans le cas présent :

Scan i2c bus...
i2c devices found: 1
Decimal address:  60  | Hexa address:  0x3c

Cela confirme l'adresse i2C du module OLED

Liens utile