Réaliser un compteur - niveau facile
L'idée dans ce mini projet est de réaliser un simple compteur. Chaque appui sur le bouton A incrémentera le compteur. Un appui sur le bouton B décrémentera le compteur. La problématique réside dans l'affichage du compteur de manière à ce qu'il tienne sur un seul écran de 25 LEDs. Jusqu'à combien peut-on compter ?
Ce mini projet est tout à fait accessible au niveau SNT.
Méthode : Première version
Dans cette version on affiche le compteur sous forme de chiffres. On peut donc compter jusqu'à 9, au delà, l'affichage n'est plus très exploitable...
from microbit import *
c=0
while True:
if button_a.was_pressed():
c += 1
if button_b.was_pressed():
c=0
display.show(str(c))
Méthode : Seconde version
Nous avons 25 LEDs donc il ne doit pas être très difficile de compter jusqu'à 25 ! Voici donc une seconde version un peu plus intéressante car elle introduit deux boucles pour imbriquées. On peut aussi imaginer une variante avec un modulo et une division entière. Il y a donc une variété de solutions et des discussions intéressantes même pour un sujet aussi trivial !
from microbit import *
c=0
def affiche(c):
k=0
for y in range(5):
for x in range(5):
k+=1
display.set_pixel(x, y, 9 if k<=c else 0)
while True:
if button_a.was_pressed():
c += 1
if button_b.was_pressed():
c=0
affiche(c)
Méthode : Troisième version
Chaque LED possède 9 niveaux de couleur. Il n'est pas aisé de distinguer deux niveaux consécutifs mais on peut facilement distinguer entre rien, à moitié allumé et complètement allumé, ce qui fait deux niveaux d'illumination pour 25 LEDs donc un compteur jusqu'à 50 par écran ! Le projet commence à se compliquer...
from microbit import *
c=0
def affiche(c):
k=-1
for y in range(5):
for x in range(5):
k+=2
if k<c:
color=9
elif k==c:
color=4
else:
color=0
display.set_pixel(x, y, color)
while True:
if button_a.was_pressed():
c += 1
if button_b.was_pressed():
c=0
affiche(c)
Méthode : Dernière version
Une LED est allumée ou éteinde, donc 1 ou 0... on arrive à la représentation binaire des nombres avec 2^25 soit plus de 33 millions de possibilités ! !
C'est l'occasion d'introduite aux élèves le principe de comptage en binaire. L'algorithme de conversion décimal-binaire ne sera pas exploité ici : on utilisera la fonction bin() de MicroPython à cet effet, mais cela peut être une évolution possible pour les plus forts...
from microbit import *
c=0
def affiche(c):
x=0
y=0
binaire=bin(c)[2:]
nbChiffres = len(binaire)
display.clear()
for i in range(nbChiffres):
digit = binaire[nbChiffres-i-1]
display.set_pixel(x,y,int(digit)*9)
x+=1
if x==5:
x=0
y+=1
while True:
if button_a.was_pressed():
c += 1
if button_b.was_pressed():
c=0
affiche(c)