Bonjour ici!
Alors voila, j'ai un problème de lecture analogique avec la broche PB4 - A2 de l'attiny85.
J'essai d'avoir le retour d'une valeur analogique sur des "détecteurs de fuites" (simples plaques cuivrée avec deux électrodes)
Ma broche est placée en INPUT_PULLUP et j'ai bien 5V présent dessus.
j'ai dans le programme l'analogReference(INTERNAL) même résultat avec (DEFAULT) (je n'ai pas besoin d'une grande précision..)
j'ai réaliser un programme de test qui fonctionne correctement sur arduino nano.
Seulement, des que je charge ce programme sur mon attiny, ben ça ne marche pas.
En gros, les retours Serial du nano m'ont permis de voir le comportement en lecture du capteur,
Si je le cour circuite (en posant mon doigt dessus par exemple) , je vois bien la valeur changée.
Par contre, lorsque je met le morceau de programme voulu dans le tiny, On dirait que cela ne marche pas comme prévu. en gros, le tiny démarre en mode "seuil bas en lecture" puis la valeur doit probablement montée pour ensuite ne plus redescendre lorsque je court circuite le capteur.
J'ai déjà trouver une particularité de la broche PB4, et il faut la lire apres l'avoir declarer en A2 sinon (4) apparemment ça ne marche pas.
J'imagine que je dois passé à coté d'un truc, mais sans le retour Serial sur tiny, je ne vois pas trop quoi..
Je pense bien au CAN mais dans le fond, je comprend pas vraiment ce qui ce passe, ni ce que je pourrais envisager d'essayer.
Et bien sur, j'ai bloquer cette entrée a cette fonction, et fait ça sur platine définitive.. (heee ouai, sinon c'est pas marrant!!)
Quelque chose me dis que c'est un truc tout bête.. mais a force de creuser, je me perd dans mon trou...
le code test ci joint: (sur le nano, j'arrive au cour circuit a avoir des valeurs a 0. sur l'attiny, une fois que ma ledO s'allume apres premiere moyenne, la ledVeille ne ce rallume jamais => je ne peut donc pas tester si j'ai des fuites.)
byte ledO = 0 ; // attribution de la broche 0 pour la led mise en marche (bleu)
byte ledVeille = 1 ; // attribution de la broche 1 pour la led de veille (jaune)
unsigned int detecteurFuite = (A2); // broche A2 analogique attiny qui est la broche PB4
int priseDeMesure=0;
void setup() {
// put your setup code here, to run once:
//Serial.begin(9600);
//Serial.println("***debut_de_programme***");
pinMode(detecteurFuite, INPUT_PULLUP); //lecture signal de 1023 à 0
pinMode(ledO, OUTPUT);
pinMode(ledVeille, OUTPUT);
digitalWrite(ledVeille,LOW);
digitalWrite(ledO,LOW);
analogReference(INTERNAL);
}
void loop() {
// put your main code here, to run repeatedly:
/* moyenne = analogRead(detecteurFuite); //rempli le tableau
Serial.print("priseDeMesure=");
Serial.println(moyenne);
delay(1000);*/
surveyFuites();
}
void surveyFuites(){ // fonction detection / surveillance de fuites eventuelles
#define NUMSAMPLE 20 //20 prises de valeurs
unsigned int lectureCapteurFuite[NUMSAMPLE]; // declaration d'un tableau de valeur NUMSAMPLE en variable de type "int"!!
static unsigned int moyenne;
static unsigned long currentTimeFuite = millis();
if(millis() - currentTimeFuite >= 50 && priseDeMesure < NUMSAMPLE ) { //50 millisecondes
currentTimeFuite = millis();
lectureCapteurFuite[priseDeMesure] = analogRead(detecteurFuite); //rempli le tableau
//Serial.print("priseDeMesure=");
//Serial.println(lectureCapteurFuite[priseDeMesure]);
priseDeMesure++;
}
if(priseDeMesure >= NUMSAMPLE){
for(int i=0; i<NUMSAMPLE ; i++){
moyenne += lectureCapteurFuite[i];
}
moyenne /= NUMSAMPLE;
priseDeMesure = 0;
// Serial.print("valeur_moyenne=");
// Serial.println(moyenne);
// delay(100);
}
switch(moyenne){
case 0 ... 10 :
digitalWrite(ledVeille,HIGH);
delay(100);
digitalWrite(ledVeille,LOW);
delay(100);
digitalWrite(ledVeille,HIGH);
delay(100);
digitalWrite(ledVeille,LOW);
delay(500);
break;
case 11 ... 1023 :
digitalWrite(ledO,HIGH);
delay(100);
digitalWrite(ledO,LOW);
delay(100);
digitalWrite(ledO,HIGH);
delay(100);
digitalWrite(ledO,LOW);
delay(500);
break;
default:
digitalWrite(ledO,HIGH);
digitalWrite(ledVeille,LOW);
delay(100);
digitalWrite(ledO,LOW);
digitalWrite(ledVeille,HIGH);
delay(100);
digitalWrite(ledO,HIGH);
digitalWrite(ledVeille,LOW);
delay(100);
digitalWrite(ledO,LOW);
digitalWrite(ledVeille,HIGH);
delay(500);
digitalWrite(ledVeille,LOW);
}
}
Merci d'avance pour l'éclairage de ma lanterne!! (commence a faire tout noir dans c'trou ^^)