Bonjour,
Je suis actuellement en stage et je dois créer un capteur infrarouge.
Pour la gestion de mon infra rouge j'utilise le PORTB d'un atmega328p.
La broche PB3 est en sortie et avec une interruption du timer2 je pilote 3 LEDs infrarouge (940nm) pour les faire osciller a 38kHz.
Sur les broches PB0 a PB2 j'ai 3 recepteurs infrarouge qui me donnent un état haut lorsque je n'ai pas de réception et un état bas lorsque de l'IR (940nm) à 38kHz est reçu.
Ces 4 broches sont protégées par une résistance externe de 1Kohm.
Le problème est le suivant :
Une fois l'état des broches de reception lu je dois afficher une page web avec l'état des boites a lettre (les capteurs, 1 LED + 1 Recepteur vont dans 3 boites).
J'utilise pour cela une fonction "readstate" que j'ai créé.
Une fois l'état lu j'utilise dans une autre fonction l'état de mes trois variables u8stateB0/1/2 (modifié par "readstate") pour déterminer si la page web doit afficher la boite vide ou pleine.
Cette page m'indique a chaque fois une boite vide, c'est a dire que mes trois variables sont tout le temps a 0 (c'est le test de mon autre fonction).
J'ai vérifié lorsque je ne mets pas de résistances de pullup sur mes entrées mes états haut et bas sont respectivement de 440 et 80mV (suite à la réception ou non d'IR).
Et lorsque les résistances sont activées les états haut et bas sont respectivement de 640 et 200mV (aussi suite à la réception ou non d'IR).
Si joint mon premier programme de test pour mon émission/réception infrarouge et ma fonction readstate (qui n'est pas utilisée dans ce programme), toutes ces fonctions sont reprisent dans mon programme final, il ajoute énormément de code uniquement pour toute la gestion du web c'est pour ça que je ne vous l'ai pas ajouté.
Je pense que le problème vient de ma fonction "readstate" mais je ne vois pas comment lire mes broches d'entrée autrement.
Dans l'attente d'idées nouvelles,
Code :
Cliquez pour afficher
-----