Passé toutes ces étapes de validation, j'ai décidé de me lancer à l'écriture du premier "vrai" code implanté sur le µC définitif.
Afin de ne pas m'encombrer de deux drivers et de tous les composants qui vont avec, j'ai juste implanté une led blanche (5mm classique, drivée en 20mA par une résistance ad-hoc) sur chaque sortie PWM. L’œil lissant naturellement la haute fréquence de clignotement cela permet un développement facilité. On se rend toutefois moins compte des variations de puissance qu'avec une led de puissance.
Je n'ai pas encore eu le temps de faire un joli schéma mais voila les grandes lignes:
Mise sous tension
Comme précisé précédemment le µC fonctionne dès sa mise sous tension. Afin de détecter le bon démarrage de celui-ci la lampe émet un rapide clignotement alterné sur les deux optiques.
Démarrage
Le démarrage se fait par un appui prolongé sur le bouton +, la lampe démarre ainsi en mode 1, appelé mode de sécurité avec 10% sur le wide et spot éteint. Cela permet d'éviter d'éblouir tout le dortoir à la mise sous tension quand on cherche un truc au réveil.
Gestion des modes classiques 1 à 3
La navigation se fait à l'aide d'appuis bref sur les boutons + et -
Mode spéciaux 4 & 5
Le passage en mode 4 se fait par double clic sur le bouton - depuis un mode classique, tandis que le passage en mode 5 se fait par double clic sur le bouton +. Au passage en mode spécial 4 ou 5, le mode classique précédent est mémorisé, de manière à retomber ensuite dessus, la sortie d'un mode spécial se fait par appui bref sur le bouton + ou le -.
Mode spécial 6
Le mode spécial 6 se comporte de manière similaire, il s'atteint depuis un mode normal par appui prolongé sur le bouton + et se quitte par un appui bref sur + ou - pour retourner au précédent mode.
Extinction
L'extinction se fait par un appui prolongé sur le bouton -, à partir de n'importe quel mode, spécial ou normal, et même en mode programmation (qui n'existe par encore, mais la structure du programme privilégie toujours l'extinction. Un moyen sûr de se retrouvé si on est perdu).
Perspectives
L'ensemble du fonctionnement décrit ci-dessus est désormais codé et fonctionnel, les points suivant doivent encore faire l'objet d'un développement pour répondre au cahier des charges initial:
Gestion de la sécurité
Le programme actuel a été prédisposé pour gérer facilement les deux critères de sécurité, à savoir la tension de batterie et la température au niveau du PCB, cependant ni la mesure de tension ni la lecture de tension n'ont actuellement été implanté. J'avais rencontré quelques soucis pour la mesure de tension sur l'Arduino Nano, principalement lié à mon inexpérience de ce langage mais je disposais de la liaison par port USB pour déboguer facilement (en transmettant la tension ou la température par l'USB via des commandes série et le moniteur série de l'IDE Arduino). Dans le cas de l'ATTiny841 je pase par un programmateur et je n'ai donc pas de liaison USB directe avec le PC, le débogage va donc se faire en quasi aveugle, avec uniquement des leds sur les sorties inutilisées.
La mesure de tension via le bus 1-wire doit également être testée sur cet ATTiny841 (Uniquement validé sur Arduino Nano).
Mode programmation
J'envisage un mode de programmation permettant de régler les niveaux en utilisation. Pour cela j'envisage la stratégie suivante:
- Passage en mode programmation par appui prolongé long (supérieur à 3 secondes) sur le bouton +
- Choix de l'optique à régler : double-clic sur + pour le wide, - pour le spot
- Réglage par palier de 5% à l'aide d'appuis brefs sur + ou -
- Sortie du mode programmation par appui long prolongé sur bouton -
Un point essentiel reste à lever, la lecture et écriture des niveaux dans l'EEPROM du µC afin de conserver ces réglages à la mise hors tension.
Aucun commentaire:
Enregistrer un commentaire