Skip to main content

I2C

El protocolo I2C se desarrolló originalmente en 1982 para receptores de TV, y juega principalmente con dos líneas (aparte de la alimentación 3.3V-5V):

  • SDA  que son datos bidireccionales
  • SCL que es la señal de reloj

Un dispositivo hace de Master y proporciona la señal de reloj. (Puede haber extraordinariamente más de un master) y los otros dispositivos, (aquí esta la ventaja, pueden haber varios) hacen de Slave y tienen asociado una dirección.

Si quieres conectar dos Arduinos por comunicación I2C visita esta página.

En Arduino Alvik, los pines SDA y SCL están conectados en los pines 11 y 12, mira el vídeo

Podemos escanear los dispositivos I2C que estén conectados

from machine import I2C
from machine import Pin

i2c = I2C(0, scl=Pin(12, Pin.OUT), sda=Pin(11, Pin.OUT))

print()
print('Scan i2c bus...')
print()

devices = i2c.scan()

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

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

print()

Fuente : https://docs.arduino.cc/tutorials/alvik/user-manual/#grove-connectors

He conectado un OLED en el conector Grove

2025-05-07 13_24_53-WhatsApp.png

Y me ha salido que tenía dos dispositivos, el primero es interno del Alvik, y el segundo es el OLED

2025-05-07 13_29_41-Arduino Lab for MicroPython.png

Ejecuto el siguiente script, que necesita importar la librería ssd1306 que contiene las funciones del OLED

from machine import I2C
from machine import Pin

import ssd1306

i2c = I2C(0, scl=Pin(12, Pin.OUT), sda=Pin(11, Pin.OUT))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

# step-3: reading data continuously inside loop
while True:
  try:
    oled.text('HOLA CATEDU !', 10, 10)      
    oled.show()

  except OSError as e: # Error Handling  
    print("Error Data")

Fuente https://dev.to/shemanto_sharkar/using-an-oled-display-with-micropython-on-esp32-d9h Autor Bidut Sharkar Shemanto

Y el resultado es :

2025-05-07 13_35_08-WhatsApp.png