Minuteur insoleuse. Du code, du code, du code.

Programmation en cours

En attendant, un prochain matin, d’avoir le plaisir de voir ma factrice frapper à ma fenêtre, j’ai avancé ces deux derniers jours sur le code du minuteur, qui est maintenant à peu près figé.

Les bibliothèques qui gèrent l’afficheur ont été réécrites, pour passer de la première version, faite avec les moyens du bord (un registre à décalage récupéré sur un décodeur TNT), à la version correspondant à la carte, qui utilise un circuit intégré dédié à ce genre d’afficheur, le MAX7219. J’en ai profité pour réaliser une bibliothèque complète qui dépasse le besoin propre au minuteur, histoire de pouvoir gérer aussi une matrice de 8×8 leds. Ca pourra toujours servir pour un autre projet.

Le programme du minuteur lui-même a aussi été revu et corrigé, d’abord pour s’adapter à cette nouvelle bibliothèque, ensuite pour intégrer diverses fonctionnalités utiles. Voici donc ce que minuteur fera:

  • Régler un temps. Oui, vraiment.
  • Lancer une insolation, la mettre en pause, et la stopper (automatiquement à son terme, ou volontairement plus tôt).
  • Afficher le temps précédemment réglé quand l’insolation est terminée. Ca peut paraitre évident, mais il serait dommage de vouloir se faciliter la vie avec un minuteur et devoir régler à nouveau un temps avant chaque insolation.

En plus de ces fonctions de base, de quoi se faciliter la vie avec un menu succinct permettant de:

  • Stocker un temps en mémoire qui sera conservé une fois l’insoleuse éteinte. Il est pour l’instant prévu seize emplacements mémoire parce que ça me semble couvrir largement le nombre de procédés utilisables, mais il reste de la place. Ce sera donc probablement bien plus.
  • Récupérer ces temps enregistré en mémoire.
  • Régler la luminosité de l’afficheur. Pas forcément utile mais puisque le circuit intégré dispose de cette fonction, ne nous fatiguons pas, préservons nos yeux, adaptons l’outil à l’environnement et pas l’inverse!
  • Enfin, activer ou désactiver la sonnerie qui peut retentir à la fin d’une insolation.

Ces deux réglages, l’intensité lumineuse de l’afficheur et l’activation de la sonnerie, sont également sauvegardés en mémoire. Ainsi c’est réglé une fois pour toutes, mais facilement accessible si besoin est.

A venir

Concernant la sonnerie, c’est un des points qui reste à régler: quel type de sonnerie, combien de temps dure-t-elle, faut-il pouvoir également paramétrer le temps pendant lequel elle sonne, sera-t-elle assez puissante? Autant de questions qui doivent murir encore un peu.

Il reste un autre détail à régler, c’est celui du réglage du temps. Comme tourner un bouton pendant des heures pour obtenir une exposition de vingt minutes en incrémentant seconde par seconde, c’est long (très long: mille deux cent secondes, soit une centaine de tours!), pour l’instant le problème est contourné en changeant les incréments de durée au fur et à mesure que le temps total augmente: en-dessous d’une minute, l’incrément est d’une seconde, puis cinq au-delà, puis dix au-delà de deux minutes, etc. Il est très possible que cela reste comme ça parce que ça fonctionne plutôt bien, mais je cherche à faire en sorte que la valeur d’incrémentation augmente naturellement lorsque l’on tourne le bouton plus d’un certain temps.

Et puis il reste un dernier détail: sans les prototypes sous la main, je n’ai rien pu tester d’autre que l’absence de problèmes syntaxiques dans le programme. Il reste à voir comment tout cela fonctionnera une fois les cartes en main!

D’ici-là, vous pouvez toujours me faire part de vos points de vue sur telle ou telle question, ou vous plonger dans la lecture des codes sources. Ils sont disponibles, utilisable et modifiables si vous voulez en faire un vous-mêmes, ou si vous avez besoin de gérer un bouton, un encodeur rotatif, un écran à sept segments ou si un minuteur paramétrable vous rendrait service dans vos créations…
Le code du minuteur
Les bibliothèques:
Afficheur sept segments
Bouton
Encodeur
Timer