Bonjour je bloque sur un problème depuis hier soir sur un Attiny84 avec la fonction analogRead.
Si la tension au borne de la pin 7 est en dessous de 0.900V (900mV) la fonction analogRead renvoi 0 et peut importe la pin ADC du µC.
Je doit récupérer la valeur d'un capteur LM35.
J'ai mis à la place du capteur un potentiomètre et fait une condition (pour connaitre se que la fonction analogRead retourne car pas de moniteur série) :
int mesure = 0;
mesure = analogRead(7);
if (mesure == 0 ) { chenillard(); }
Je vérifie la tension avec un multimètre sur cette pin et dès que je suis en dessous de +/- 0.900V la condition se réalise alors que je devrais avoir une valeur de +/- 180.....
Sans la condition sur mon afficheur 7segments ça m'affiche bien 0 donc ça retourne bien 0.....
Et mon capteur doit me retourner une tension d'environ 0.200V.
Bonjour , je reviens sur le sujet car je me suis procuré des modules tm1637. J'ai encore des soucis avec analogRead d'un atTiny84.
En effet un analogRead sur un LM35 me retourne des valeurs entre 15 degrée et 30 degrée (se qui n'est évidement pas possible).
J'ai donc décidé d'afficher la valeur en mV sur l'afficheur et de la comparée avec mon multimètre branché en parallèle.
Mon multimètre affiche bien la bonne valeur mais l'afficheur saute entre 150mV et 30mV de temps en temps.
J'ai encore passé des heures et je ne trouve pas pourquoi.... J'ai changer d'afficheur, l'attiny84 le LM35 même essayé plusieurs bibliothèque du TM1637 mais toujours pareil.
J'ai bien mis un condensateur de découplage aux borne du LM35 comme conseillé.
Pourquoi l'analogRead ne m'indique pas la bonne valeur et ne se stabilise pas (car 70% du temps la bonne valeur est affiché) comme si c'était "parasité" ?
EDIT : je viens de remplacer l'attiny84 par un arduino uno (avec le même cablage et le même code) et ça fonctionne très bien.... Problème seulement avec les attiny apparemment, mais pourquoi ?........
Bon j'ai trouvé un compromis.... J'ai remarqué que avec la fonction clearDisplay() il y avais moins de problème. J'ai donc alimenté le +5V du module avec une sortie de l'attiny afin de pouvoir contrôler l’alimentation de celui-ci. Avant de faire un analogRead(); je met a l'état bas la sortie afin de couper l'alimentation du module et ça fonctionne....
J'ai aussi du doublé les display car allez savoir pourquoi 1 fois sur 5 ça n'affiche pas ou ne supprime pas la valeur voulu....
Le seul inconvénient c'est le léger clignotement visible lors du rallumage. Si ça peut servir à quelqu' un :
On voudrait que 44*50000 donne 2200000, mais les calculs sont fait avec des entiers et cela donne -28224 car l'opération déborde. Alors tout ce qui suit est faux.
Si tu veux vraiment faire
il faut faire
Petit test; écrire Serial.println((44 * 50000) / 1024);