J'ai un écran LCD piloté en I2C. J'ai donc besoin de la bibliothèque Wire pour gérer le I2C et j'ai décidé d'utiliser la bibliothèque hd44780 et plus spécifiquement la classe qui gère l'écran I2C qui est dans hd44780_I2Cexp.h
ces commentaires ne sont pas top
On définit ici de constantes ou des variables avec le bon type.
La constante nbCols est le nombre de colonne, nbRows le nombre de lignes de mon écran qui va s'appeler lcd.
Ces valeurs sont nécessaire dans le code plus tard pour définir le lcd (appel à begin) ou calculer où positionner nos écritures.
Comme le nombre de colonnes et lignes ne sera jamais modifié, on peut le dire au compilateur en utilsant le mot clé const.
ces commentaires sont peu intéressants...
expliquez plutôt à quoi ça sert
// Broche pour l'indicateur de dépassement de seuil pour Eau Haut Poêle.
// câblage = pin 11 ---- Resistance 220Ω --- Anode [LED] Cathode ---- GND.
const byte pinLedHP = 11;
// Broche pour l'indicateur de dépassement de seuil pour .....
// câblage = pin 12 ---- Resistance 220Ω ---Anode [LED] Cathode ---- GND.
const byte pinLedPC = 12; // cette valeur dépend donc du câblage
...
C'est la création d'une variable nommée boutonSilence, du type Toggle, qui est initialisée en utilisant le N° de la broche pinBoutonSilence
Vous pourriez expliquer que la sonde fonctionne avec une précision réglable, entre 9, 10, 11 et 12 qui correspondent à la résolution de mesure de la température, exprimée en bits. La résolution définit la précision et le nombre de décimales que la sonde peut fournir.
La valeur 9 signifie que la sonde mesure avec une résolution de 9 bits, ce qui correspond à des incréments de 0,5 °C. La valeur 10 correspond à une résolution de 10 bits, soit des incréments de 0,25 °C. La valeur 11 correspond à 11 bits, soit des incréments de 0,125 °C. La valeur 12 correspond à 12 bits, ce qui donne la résolution maximale de la sonde, avec des incréments de 0,0625 °C.
Plus la résolution est élevée, plus la mesure est précise, mais le temps de conversion de la température augmente également. Pour 12 bits, le temps de conversion est d’environ 750 ms, tandis que pour 9 bits il est d’environ 93,75 ms.
pourquoi const uint8_t???
const parce qu'on la fixe une fois pour toute dans notre programme. elle ne changera pas donc on le dit au compilateur et le type uint8_t vient de l'usage que l'on veut en faire. Si vous regardez l'interface de la classe, on voit
que la fonction prend un paramètre de type uint8_t (c'est à dire un octet), donc c'est naturel de prendre ce type pour notre constante.
Concernant
Pour représenter facilement nos différents capteurs, on définit un nouveau type par le biais d'une structure.
On va mettre dans la structure tout ce qui a trait à un capteur dans notre code et donc après analyse des besoins, on voit qu'on a besoin :
- d'un nom pour afficher sur le LCD. ce nom ne changera pas, donc on prend un pointeur sur un texte fixe (const char *) comme type de données.
- l'adresse du module
- la dernière valeur lue lors des demandes successives (ça permet de conserver la t° et de voir à combien on était sans attendre qu'une conversion soit terminée)
- un drapeau vrai ou faux qui va dire si cette valeur a changé depuis la dernière fois afin d'optimiser l'affichage (on n'a pas besoin de récrire une valeur qui n'a pas changée)
on utilise ensuite ce nouveau type de données pour décrire nos capteurs
Capteur lesCapteurs[] = {
{"EHP", {0x28, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x7E}, 0.0, true}, // 0 - Eau Haut Poêle
{"EBP", {0x28, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xDE}, 0.0, true}, // 1 - Eau Bas Poêle
{"HCP", {0x28, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xBE}, 0.0, true}, // 2 - Haut Cuve Poêle
{"BCP", {0x28, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x87}, 0.0, true}, // 3 - Bas Cuve Poêle
{"PC ", {0x28, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xE7}, 0.0, true}, // 4 - PC
{"ECS", {0x28, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x47}, 0.0, true}, // 5 - ECS
};
sur la première ligne par exemple, on dit que l'on a un capteur dont le petit nom sera EHP, on donne ensuite son adresse, on dit que la dernière T° lue était 0 (pourquoi pas) et que l'on a besoin de faire un affichage (pour que lors du premier passage l'écran affiche quelque chose même si c'est 0°)