====== lamaPLC: RP2040_ETH_Modul: I²C scanner ======
The program scans the addresses of devices connected via I²C.
Important: The Ethernet module is accessible by **RP2040_ETH** via **UART1** with the following configuration:
//uart1 = UART(1, baudrate=115200, tx=Pin(20), rx=Pin(21), timeout=50)//
import machine
from machine import Pin, I2C
import time
# I2C configuration for RP2040-ETH
# Using I2C port 0, SDA on Pin 4, SCL on Pin 5, at 100kHz frequency
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=100000)
def scan_i2c():
print("I2C Scanner starting...")
print("Scanning bus I2C0 (SDA=GP4, SCL=GP5)...")
# scan() returns a list of 7-bit decimal addresses of found devices
devices = i2c.scan()
if not devices:
print("No I2C devices found. Check your wiring and pull-up resistors.")
else:
print(f"Found {len(devices)} device(s):")
for device in devices:
# Print the address in both decimal and hexadecimal format
print(f" - Decimal: {device}, Hex: {hex(device)}")
# Run the scanner
if __name__ == "__main__":
while True:
scan_i2c()
# Wait 5 seconds before the next scan
time.sleep(5)
**Output example:**
I2C Scanner starting...
Scanning bus I2C0 (SDA=GP4, SCL=GP5)...
Found 2 device(s):
- Decimal: 90, Hex: 0x5a
- Decimal: 119, Hex: 0x77
{{tag>code! micropython 2026 RP2040_ETH i2c comunication}}
This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}