Étape: TP01 Pondération: 20 % Date de remise: 21 octobre 2022
Mise en situation
La compagnie des Thermostats Quantiques du Québec inc vous soumets le mandat de réaliser le prototype de leur prochain produit, l’incroyable ‘THERMOSTAT 4201C4 PRO‘ ?.
Résumé
Il faut réaliser, en utilisant le simulateur Wokwi, un montage et un programme en langage C pour Arduino Uno, un système qui reproduit quelques fonctionnalités d’un thermostat électronique tel que; afficher sur LCD I2C la température (Celcius/fahrenheit), contrôler, à partir de deux boutons (UP/DOWN), la température et finalement, afficher le temps écoulé, depuis le démarrage de la simulation , en jours heures:minutes:secondes.
Devis du projet
Il faut réaliser un projet qui :
Propose un circuit électronique, sous Wokwi, composé des éléments listés à la section 1
Il faut ajouter, au circuit, les composants manquants au schéma 1.1
L’écran principal de l’application – voir la section 2.3
NOTE: Pour passer de la page 2.1 à la page 2.3, il faut appuyer sur le bouton rouge puis le relâcher. Simplement appuyer sur le bouton rouge, n’est pas une opération valide.
Affiche sur l’écran principal (voir la ligne numéro 4 de la section 2.3), le temps écoulé depuis le démarrage de l’application, en jours, heures, minutes et secondes en respectant le format suivant:
Jours000, HH:MM:SS
Indice: %
Bonus 2 points: Afficher le ‘s‘ de ‘Jours‘ seulement si ‘Jours‘ est > 1
Bonus 5 points: Continuer à afficher le temps qui passe même si les boutons rouge et bleu demeurent enfoncés.
Propose trois (3) boutons pour le contrôle de l’application:
Le bouton rouge permet
d’avancer de l’écran 1 à l’écran 2 puis à l’écran 3
De l’écran 3, le bouton rouge permet d’augmenter (de un) la température
Le bouton bleu permet de diminuer (de un) la température
Le bouton vert permet de passer de l’unité celsius à l’unité fahrenheit
NOTE: Pour que l’action d’un bouton soit exécutée, il faut l’appuyer puis le relâcher. Simplement appuyer sur le boutonn’est pas suffisant pour lancer l’opération.
Propose une étendu de température entre 8c et 32c
Il ne doit pas être possible de diminuer la température en bas de 8c
Il ne doit pas être possible d’augmenter la température au dessus de 32c
Une tentative de diminuer ou d’augmenter la température à l’extérieure des valeurs permises, va produire un clignotement de la DEL 2 fois dans une seconde.
Utilise la fonction snprintf(). ATTENTION, ne pas utiliser la fonction sprintf(), car elle peut occasionner un débordement de la mémoire.
Utilise des variables globales que si c’est pertinent.
Propose un code source répondant aux critères de qualité du cours
Documentation de l’entête du programme
Documentation des sections, blocs, fins de blocs
Utilisation de Macros/constantes
Pas de valeurs (aucunes) à la dure; int, char[], chaine de caractères, message, nombre, min, max, colonne, ligne, …
Pertinence du nom des variables
1 – Liste des composants électroniques
Un Arduino UNO
Trois (3) PushButton
Un Rouge, sur la broche D11, pour augmenter la température
Un Vert, sur la broche D9, pour passer de celsius à fahrenheit
Un Bleu, sur la broche D2, pour diminuer la température
Un écran LCD 20×4 I2C
Une DEL rouge, sur la broche D5, qui clignotera si nous tentons de sortir des températures limites.
2 – Les écrans de l’application
2.1 – L’écran de départ
2.2 – L’écran d’aide
2.3 – L’écran principal de l’application
3 – Défis supplémentaires
3.1 – Pour 2 points: Afficher le ‘s‘ de ‘Jours‘ seulement si ‘Jours‘ est > 1 3.2 – Pour 5 points: Continuer à afficher le temps qui passe même si les boutons rouge et bleu demeurent enfoncés. 3.3 – Pour 10 points: Si les boutons de contrôle de la température demeurent enfoncés plus de 3 secondes, alors augmenter ou diminuer la température de 1c par 500 ms. 3.4 – Pour 5 points: Gérer et afficher la température en utilisant un nombre réel (double/float) avec un chiffre après le point. Par exemple 22.5c. Si c’est le cas, alors il faut contrôler la température de 3.3 en incréments de 0.25c. 3.5 – Pour 10 points: Avec un bouton supplémentaire jaune (servant de bascule de contrôle entre les boutons et un potentiomètre) et un potentiomètre, permettre le contrôle de la température soit à partir des boutons ou du potentiomètre. Dans les deux cas, il faut respecter la température minimum et maximum.
4 – Grille de correction
Item
%
1. Respect des directives du devis, des fonctionnalités et des pages écrans
10
2. Projet fonctionnel et optimisation du code
12
3. Gestion correcte des températures minimum et maximum
3
4. Gestion correcte de la DEL lors de l’atteinte des valeurs limites de la température
5
5. Documentation de l’entête
5
6. Documentation du code
10
7. Utilisation exhaustive des macros/contantes
10
8. Utilisation de noms de variables significatifs
5
9. Gestion correcte de la sélection et de l’affichage des échelles Celsius et Fahrenheit
5
10. Gestion correcte des boutons (action sur le relâchement du bouton)
5
11. Utilisation correcte de la fonction C snfprintf()
5
12. Mise en place fonctionnelle du schéma électronique
10
13. Affichage de: Jours HH:MM:SS
10
14. Remise du projet selon les directives du devis
5
————————————————————– Total –>
100%
Défi 3.1
2
Défi 3.2
5
Défi 3.3
10
Défi 3.4
5
Défi 3.5
10
5 – Détails pour la remise
Il faut remettre dans LEA, un fichier texte (Matricule.TP01.txt) qui contient votre nom et le lien de partage de votre projet Wokwi.
Dans Wokwi, il y a un bouton ‘SHARE’ pour obtenir ce lien:
Ce qui va afficher l’écran suivant:
Vous pourrez récupérer le lien, en cliquant sur l’icône du ‘Clipboard’
et le copier dans un document texte.
Par exemple,
Étudiant: Fred Labrosse
Voici le lien de mon TP01
https://wokwi.com/projects/344807865574228562