Je capte un signal d'un micro de gutiare que j'amplifie via un AOP (avec les résistances qui vont bien) pour ensuite lire sa valeur via la pin A0. Jusqu'à ce jour, mon montage fonctionnait bien et j'obtenais des valeurs correcte.
J'ai voulu initialiser ma pin (allez savoir pourquoi) et depuis il me lit uniquement une valeur aux alentours de 127.
Le code complet est le suivant, je pense que l'erreur est dans le setup, mais je ne sais pas où... Si vous pouvez m'aider, ce serait top. Merci par avance.
n'est-ce pas le pinMode(A0, INPUT); qui met A0 en entrée digitale ?
lorsqu'on utilise analogRead(A0), il ne faut pas déclarer la pin dans le setup
AnalogWrite est pour les pins pwm,
je conçois que çà prete à confusion
les broches analogiques de l'arduino sont des entrées (ou des i/o digitales) mais jamais des sorties analogiques
déclarer une entrée et écrire sur une entrée n'est pas tres logique
Il peut éventuellement y avoir conflit avec pinMode(x, INPUT) et analogWrite qui est en mode sortie.
Tout dépend du contenu de la partie de code "anticonnerie" des fonctions arduino.
Normalement elles sont bien faites de ce coté et c'est le dernier ordre qui est pris en compte.
Par contre il y a effecivement confusion de ta part : analoWrite() ne s'applique qu'a des pins spéciales : celle qui peuvent être controlées par un Timer. Elles sont souvent appellée "pin PWM" bien qu'elles puissent faire plus que de la PWM et sont souvent repérée par un tilde ˜ .
La PWM est un signal numérique d'amplitude 5V, ce n'est pas un signal analogique tant qu'elle n'a pas subit un traitement par filtrage passe bas.
Il est étonnant que cela ait pu fonctionner dans le passé, tu as probablement changé de pin dans tes modifs.
déclarer une entrée et écrire sur une entrée n'est pas tres logique
Exact !
Il est étonnant que cela ait pu fonctionner dans le passé, tu as probablement changé de pin dans tes modifs.
En fait inialement il n'y avait rien d'autre dans le setup() que le Serial.begin(9600)
Je voulais initialiser ma pin pour "faire ça propre", mais ce n'est apparemment pas utile.
Par contre comment remettre ma pin dans un mode par défaut ? J'ai l'impression que pinMode(A0, INPUT); suffit ?
Quand on analyse le code de analogWrite() on voit que ça commence par mettre la pin en sortie, même si la pin n'est pas capable de faire du pwm.
La sortie entre donc en conflit avec la tension d'entrée. Il est donc tout à fait normal que la valeur lue soit modifiée. Il est même possible de détruire l'électronique de mesure et/ou la pin de l'arduino.