from machine import ADC, Pin, SoftI2C
import ssd1306
from time import sleep_ms
# Configuration des broches
potentiometre = ADC(Pin(34))
potentiometre.atten(ADC.ATTN_11DB) # Configuration de l'atténuation pour une plage de 0-3.3V
# Configuration de l'écran OLED
busi2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, busi2c)
# Liste pour stocker les valeurs de tension
donnees_tension = []
def lire_tension():
"""Convertit la valeur ADC entre 5-59 pixels (5 pixels des bords haut et bas)"""
return oled_height-5-(int((oled_height-10)*potentiometre.read()/4095))
def dessiner_graphique(donnees):
"""Dessine le graphique de tension sur l'écran OLED"""
oled.fill(0) # Efface l'écran
for i in range(1, len(donnees)):
# Convertir les valeurs de tension en coordonnées y
# Inverse l'axe vertical pour que 0 soit en bas
y1 = donnees[i-1]
y2 = donnees[i]
x1 = (i-1)
x2 = i
# Dessiner un point par coordonnée
oled.pixel(x1, y1, 1)
oled.pixel(x2, y2, 1)
oled.show()
# Boucle principale
while True:
tension_actuelle = lire_tension()
donnees_tension.append(tension_actuelle)
if len(donnees_tension) > oled_width:
donnees_tension.pop(0)
dessiner_graphique(donnees_tension)
sleep_ms(10)