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)5V y masa):
- 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, (en plural, con los mismos cables, aquí esta la ventaja, pueden haber varios)ventaja) hacen de Slave y tienencada uno tiene 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,12 miray elde vídeoahí salen por los conectores QWIIC y Grove :
Podemos escanear los dispositivos I2C que estén conectados y averiguar la dirección que tienen asociada :
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
Y me ha salido que tenía dos dispositivos, el primero es interno del Alvik, que tiene dirección 43 y el segundo es el OLED conectado:
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 :