Niveau : Première générale, enseignement de spécialité SI
Le tapis de course PF790 Interactif de la société PRO-FORM (voir figure ci-dessous) est un système complet de fitness à domicile.
Il intègre des programmes d'entraînements spécifiques :
L’objectif de cette étude est de compléter l’affichage existant afin de fournir à l’utilisateur des informations supplémentaires.
Durant les programmes de contrôle de la fréquence cardiaque, la matrice à DEL de la console affiche simplement un pic à chaque fois qu’un battement cardiaque est détecté.
Il est envisagé d’indiquer la zone de travail cardiaque par des nouveaux pictogrammes afin que l'utilisateur sache quel type d’exercice il est en train d’effectuer :
Les différentes zones de travail cardiaque sont définies grâce à 3 seuils (fc1 à fc3) exprimés en battements par minute (bpm). Ces seuils dépendent de l’âge de l’utilisateur, qui est saisi à partir de la console en début d’exercice.
On détermine la fréquence cardiaque maximum en appliquant la relation suivante :
fcmax = 220-age
Exemple : pour un utilisateur de 20 ans sa fréquence cardiaque fcmax = 200 bpm
Zone | Fréquence cardiaque | Type d'effort | Pictogramme |
---|---|---|---|
1 | inférieur à 55% de fcmax | Inefficace | |
2 | compris entre 55% et 65% de fcmax | Brûlage de graisses | |
3 | compris entre 65% et 85% de fcmax | Aérobie | |
4 | Supérieur à 85% de fcmax | Anaérobie |
Remarque : Si la fréquence cardiaque dépasse le seuil fc3 (zone 4), alors le tapis s’arrête automatiquement afin d’assurer la sécurité de l’utilisateur (non étudié).
compléter le programme ci-dessous permettant de saisir l'âge, puis de calculer les 3 seuils fc1
, fc2
et fc3
en remplaçant les ? par un calcul, chacune de ces 3 variables seront des entiers (type int
)
Pour afficher les différents motifs, le microcontrôleur (µC) va envoyer deux octets sur son interface de sortie, chacun dédiés à la commande des DEL de la matrice.
La matrice est constituée de 70 DEL réparties sur 7 lignes et 10 colonnes.
Pour commander la DEL A, il faut activer sa ligne et sa colonne (soit L1 et C2 du schéma ci-dessus), ce qui nécessite d’utiliser deux sorties du microcontrôleur.
Le schéma de liaison est le suivant :
Remarques :
Pour commander les soties GPIO en même temps, on liste d'un coté le numéro des sorties et de l'autre leurs états logiques correspondants
Exemple pour commander les lignes : GPIO.output([12,13,15,16,18,7,11],[1,0,1,0,1,0,1])
On peut donc déclarer la variable lignes
de type list
:
lignes=[12,13,15,16,18,7,11]
GPIO12 étant le poids fort donc le premier élément de la liste
Déclarer ci-dessous la variable colonnes
de type list
ayant comme poids fort GPIO33 :
Q1. Placez des niveaux logique 1 ou 0 dans le tableau ci-dessous permettant d’activer les colonnes permettant d’obtenir le pictogramme « = »
GPIO33 | GPIO32 | GPIO35 | GPIO31 | GPIO36 | GPIO38 | GPIO40 | GPIO37 | |
---|---|---|---|---|---|---|---|---|
Colonnes |
? |
? |
? |
? |
? |
? |
? |
? |
En faire de même pour les lignes.
GPIO12 | GPIO13 | GPIO15 | GPIO16 | GPIO18 | GPIO7 | GPIO11 | |
---|---|---|---|---|---|---|---|
Lignes |
? |
? |
? |
? |
? |
? |
? |
Q2. Allumer le Raspberry pi, vérifier la présence des fichiers tapisIHM.py
et biometre.py
dans le dossier documents, sinon télécharger tapis1.py et biometre.py.
Ouvrir le script tapis1.py avec l'application « Thonny » et modifiez-le comme suit :
lignes
et colonnes
aux lignes 31 et 32 du code ;eteindre()
permet de mettre toutes les lignes et colonnes à l'état logique zéro. Compléter les lignes 15 et 16 du code ;Brancher la matrice LED, exécuter le programme et faire valider le fonctionnement par le professeur.
Reporter vos modifications ci-dessous, permettant de faire fonctionner le programme :
Pour afficher les autres pictogrammes, il faut faire défiler les colonnes les unes après les autres très rapidement et l’œil percevra le pictogramme entier.
Regarder la vidéo du multiplexage d'un afficheur 7 segments pour comprendre le principe de programmation :
Q3. Complétez la séquence permettant d’afficher le pictogramme ci-dessus en additionnant les poids lignes et des colonnes sélectionnées.
C2 128 |
C3 64 |
C4 32 |
C5 16 |
C6 8 |
C7 4 |
C8 2 |
C9 1 |
Décimal | |
---|---|---|---|---|---|---|---|---|---|
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
|
L1 64 |
L2 32 |
L3 16 |
L4 8 |
L5 4 |
L6 2 |
L7 1 |
Décimal | ||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
|
PAUSE | |||||||||
C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Décimal | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
|
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Décimal | ||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
|
PAUSE | |||||||||
C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Décimal | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
|
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Décimal | ||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
|
PAUSE | |||||||||
C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Décimal | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
|
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Décimal | ||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
|
PAUSE | |||||||||
C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Décimal | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
|
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Décimal | ||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
|
PAUSE | |||||||||
C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Décimal | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
|
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Décimal | ||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
|
PAUSE |
Q4.Vérifier la présence du fichier tapis1.py dans le dossier documents, sinon télécharger, puis modifier le programme tapis2.py en ajoutant les valeurs décimales des colonnes et lignes, permettant d'afficher le pictogramme « Brûlage des graisses ».
Faire valider le fonctionnement après avoir ajusté la variable t
: temps de défilement des colonnes.
Reportez vos modifications ci-dessous : la variable t
et la boucle while True :
.
Le programme précédent comporte de nombreuses lignes qui pourraient être réduites grâce à une boucle for
ainsi que
2 listes cols_flamme
et lignes_flamme
contenant les octets de chaque ligne et colonne.
cols_flamme
et lignes_flamme
après t=0.25
.while True :
créer une boucle for
permettant de parcourir ces
2 listes afin de réduire le programme du pictogramme de « brûlage de graisses ».CODE BINAIRE NATUREL | CODE Hexadécimal |
|||
---|---|---|---|---|
8 | 4 | 2 | 1 | |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
... | ||||
1 | 0 | 0 | 1 | 9 |
1 | 0 | 1 | 0 | A |
1 | 0 | 1 | 1 | B |
1 | 1 | 0 | 0 | C |
1 | 1 | 0 | 1 | D |
1 | 1 | 1 | 0 | E |
1 | 1 | 1 | 1 | F |
Q5. Complétez la séquence permettant d’afficher le pictogramme ci-dessus :
C2 | C2 8 |
C3 4 |
C4 2 |
C5 1 |
C6 8 |
C7 4 |
C8 2 |
C9 1 |
Hexa | |
---|---|---|---|---|---|---|---|---|---|---|
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
L1 4 |
L2 2 |
L3 1 |
L4 8 |
L5 4 |
L6 2 |
L7 1 |
Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE | ||||||||||
C3 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Hexa | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE | ||||||||||
C4 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Hexa | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE | ||||||||||
C5 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Hexa | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE | ||||||||||
C6 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Hexa | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE | ||||||||||
C7 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Hexa | Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x |
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE | ||||||||||
C8 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | Hexa | |
Colonnes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
L1 | L2 | L3 | L4 | L5 | L6 | L7 | Hexa | |||
Lignes | ? |
? |
? |
? |
? |
? |
? |
? |
0x | |
PAUSE |
Q6. Vérifier la présence du fichier tapis3.py dans le dossier documents, sinon télécharger, puis modifier le programme tapis3.py permettant d'afficher le pictogramme représentant un effort « Aérobie » en programmant des valeurs hexadécimales.
Exécuter le programme et faire valider le fonctionnement par le professeur
Reportez vos modifications ci-dessous : la variable t
et la boucle while True :
.
Q7. Vérifier la présence des fichiers tapisIHM.py et biometre.py dans le dossier documents, sinon télécharger tapisIHM.py.
Pour réduire le nombre de variables, nous allons utiliser des listes contenant 2 sous-listes
Exemple :
fc1
, fc2
et fc3
n = valeur entière du calcul (0.2/t/8) pour i variant de 0 à n afficher le pictogramme coeur durant t secondes éteindre l'afficheur attendre 0.2 secondes
Compléter le programme ci-dessous avec vos modifications.
Pascal Hassenforder 01/11/2021
Mise à jour du 03/01/2024