2022.TP01

6 octobre 2022

Version 1.0.2022.10.07

É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’incroyableTHERMOSTAT 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 :

  1. 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
  2. Propose trois (3) pages écrans
    • L’écran de départ – voir la section 2.1
    • L’écran d’instructions – voir la section 2.2
    • 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.
  3. 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:
    • Jours 000, 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.
  4. 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 bouton n’est pas suffisant pour lancer l’opération.
  5. Propose une étendu de température entre 8c et 32c
    1. Il ne doit pas être possible de diminuer la température en bas de 8c
    2. Il ne doit pas être possible d’augmenter la température au dessus de 32c
      1. 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.
  6. Utilise la fonction snprintf(). ATTENTION, ne pas utiliser la fonction sprintf(), car elle peut occasionner un débordement de la mémoire.
  7. Utilise des variables globales que si c’est pertinent.
  8. Propose un code source répondant aux critères de qualité du cours
    1. Documentation de l’entête du programme
    2. Documentation des sections, blocs, fins de blocs
    3. Utilisation de Macros/constantes
    4. Pas de valeurs (aucunes) à la dure; int, char[], chaine de caractères, message, nombre, min, max, colonne, ligne, …
    5. Pertinence du nom des variables

1 – Liste des composants électroniques

schéma 1.1

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

Affichage en Celsius

Affichage en Fahrenheit

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 écrans10
2. Projet fonctionnel et optimisation du code12
3. Gestion correcte des températures minimum et maximum3
4. Gestion correcte de la DEL lors de l’atteinte des valeurs limites de la température5
5. Documentation de l’entête5
6. Documentation du code10
7. Utilisation exhaustive des macros/contantes10
8. Utilisation de noms de variables significatifs 5
9. Gestion correcte de la sélection et de l’affichage des échelles Celsius et Fahrenheit5
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 électronique10
13. Affichage de: Jours HH:MM:SS10
14. Remise du projet selon les directives du devis5
————————————————————– Total –>100%
Défi 3.12
Défi 3.25
Défi 3.310
Défi 3.45
Défi 3.510

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