from machine import Pin, ADC, PWM
from time import sleep
import random
# Segments de l'afficheur 7 segments (a à g)
segments = [
Pin(20, Pin.OUT), # a
Pin(19, Pin.OUT), # b
Pin(16, Pin.OUT), # c
Pin(17, Pin.OUT), # d
Pin(18, Pin.OUT), # e
Pin(21, Pin.OUT), # f
Pin(22, Pin.OUT), # g
]
# Bouton poussoir sur GP2
bouton = Pin(2, Pin.IN, Pin.PULL_DOWN)
# Potentiomètre connecté sur GP27
pot = ADC(27)
# PWM sur GP28 pour régler la luminosité de l’afficheur
pwm = PWM(Pin(28))
pwm.freq(1000)
# Table des segments pour les chiffres de 1 à 6
chiffres = {
1: [1,0,0,1,1,1,1],
2: [0,0,1,0,0,1,0],
3: [0,0,0,0,1,1,0],
4: [1,0,0,1,1,0,0],
5: [0,1,0,0,1,0,0],
6: [0,1,0,0,0,0,0]
}
def afficher_chiffre(n):
etats = chiffres[n]
for i in range(7):
segments[i].value(etats[i])
def eteindre_afficheur():
for segment in segments:
segment.value(1)
# Éteindre l'afficheur au démarrage
eteindre_afficheur()
# Attente initiale pour éviter faux appui
while bouton.value() == 1:
sleep(0.01)
while True:
if bouton.value() == 1:
# Lire le délai depuis le potentiomètre (entre 0.5 et 3 secondes)
valeur = pot.read_u16()
delay = 0.5 + (valeur / 65535) * 2.5 # plage : 0.5 à 3.0 sec
print(f"Délai d’attente : {delay:.2f} sec")
# Attente réglée par le potentiomètre
sleep(delay)
# Afficher chiffre aléatoire
n = random.randint(1, 6)
afficher_chiffre(n)
print("Chiffre affiché :", n)
# Attente jusqu’à ce que le bouton soit relâché (anti-rebond)
while bouton.value() == 1:
sleep(0.01)
# éteindre l'afficheur après un court moment
sleep(0.5)
eteindre_afficheur()