Quand j’avais posté le code de l’objet Porte, j’avais dit qu’il y avait un truc qui me gratouillait. C’est tout bête, mais si vous regarder le code que j’avais fait, vous pouvez remarquer que pendant que la porte est en mouvement, je scrutais l’état des IO concerné toutes les 500ms. Le but étant d’arrêter au plus vite le moteur quand une fin de course est détectée. Le problème, c’était qu’à chaque lecture de la méthode readstatus par le timer (donc toutes les 500ms), l’évènement était levé. Dans l’absolu, rien de bien grave, mais moi ça me gratouillait … J’ai donc repris ce code et je l’ais modifié pour que l’évènement ne soit levé qu’en cas de changement d’une des io. J’en ai profité pour remplacer les 0 et 1 de rlon et rldn par des booleans (plus propre) et réduit le nombre de variables utile au strict minimum. J’ai aussi ajouter la prise en charge de l’état de la porte au cas où l’on n’utilise pas de contact de fin de course.
EDIT :
Décidément, il ne me plaisait pas le code de cette porte. Donc je l’ai réécrit.
Un des interet majeur de la poo, c’est justement de permettre de faire abstraction de ce qu’il se passe à l’interieur du code d’un objet pour n’en exposer que ce que l’on a besoin a l’exterieur. Cet objet est une porte, donc ou en sont les relais et les fdc, on s'en fout, la seule chose que l’on a besoin de savoir, c’est si elle est ouverte, fermée ou en mouvement dans un sens ou dans l’autre. Pour ce qui est des actions, on a juste besoin de pouvoir l’ouvrir ou la fermer.
J’ai donc réécrit le code de cette porte pour n’exposer que ce qu’il y a besoin d’avoir. J’ai réduit la lecture des 4 IO utilisées au strict minimum. Quand la porte monte ou descend, la seule chose que je dois surveiller c’est l’état de la fin de course du sens où va la porte, ni plus ni moins. Avec cette réflexion, le code est beaucoup plus simple et consommera beaucoup moins de ressource pendant les rotations du moteur :
Avant, pendant que la porte était en mouvement, toutes les 500 ms on avait 4 lecture de GPIO , 15 évaluations. Avec ce nouveau code simplifié , 1 lecture gpio , 2 évaluations.

- porte.png (107.69 Kio) Vu 2716 fois
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).