from machine import Pin, UART, I2C
from time import sleep
import ssd1306
# Configuration I2C pour l'écran OLED
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# Configuration de l'UART
uart = UART(1, baudrate=9600, tx=Pin(17), rx=Pin(16)) # TX -> GPIO 17, RX -> GPIO 16
# Message d'initialisation à l'écran OLED
oled.fill(0)
oled.text("System Ready", 0, 0)
oled.text("Waiting for data", 0, 10)
oled.show()
while True:
try:
if uart.any(): # Vérifie si des données sont disponibles
data = uart.read() # Lit les données entrantes
if data:
try:
decoded_data = data.decode('utf-8').strip() # Décode les données UTF-8
print(f"Reçu : {decoded_data}") # Affiche dans la console
# Affiche les données sur l'écran OLED
oled.fill(0)
oled.text("Received Data:", 0, 0)
oled.text(decoded_data, 0, 10)
oled.show()
except UnicodeDecodeError:
# En cas d'erreur de déchiffrement UTF-8
print("Erreur de décodage des données reçues.")
oled.fill(0)
oled.text("Error decoding:", 0, 0)
oled.text("Invalid UTF-8", 0, 10)
oled.show()
else:
# Affiche un message en attente de données
oled.fill(0)
oled.text("Waiting for data...", 0, 0)
oled.show()
except Exception as e:
# Gestion des erreurs générales
print(f"Erreur inattendue : {e}")
oled.fill(0)
oled.text("System Error", 0, 0)
oled.text(str(e), 0, 10)
oled.show()
sleep(1)