URGENT AIDE PROJET

Bonjour, , je suis en term sur un projet de réalisation d'un programme sur la pluviométrie: dès qu'il bascule l'impulsion est détecté par la carte arduino qu'il incrémente à sa variable Impulsions, il y a ensuite conversion des impulsions en mm de pluie. Sil vous plait j'ai vraiment besoin d'avoir les bases. Merci

Bonjour,

Toutes les infos ici

Presque Kamill, c’était le post du dessous :grin: :grin: :grin:

Sinon c'est quoi la question? Il n'y a rien de clair là, faudrait reformuler un peu.

J'aimerai que a chaque basculement de auget, le pluviometre detecte une impulsion. Par exemple ; un auget tombe —> impulsion detecter. Et a chaqur nouveau basculement je multiplie la valeur par 0.204

c'est un peu comme le post den dessous sauf que moi il incremente la valeur grace au impulsion detecté

Rien de bien sorcier.

Utilise une interruption materielle dispo sur arduino et incrémente un compteur.

Pour le reste du traitement, dans la loop().

Jambe:
Presque Kamill, c’était le post du dessous :grin: :grin: :grin:

Effectivement, je me suis un peu mélangé les pinceaux :-[

Peux tu me donner une base stp je dois le rendre pour bientot et je suis perdu !

Qui va être noté? Toi ou moi?

Personnellement, j'ai eu mes diplômes, j'ai pas besoin de passer ceux des autres.

Je t'ai donné des pistes, creuse de ce côté, il y a des milliards d'exemple sur le net.

int pluvio = 4; // par exemple pour la pin 4
volatile int compteur = 0;

void setup()
{
 Serial.begin(9600);
 attachInterrupt(pluvio, compter, CHANGE);
}

void loop()
{
   Serial.println(compteur);
   delay(2000);
}
 
void compter()
{
 compteur = compteur+1;
}

Je viens dessayer sa mais aucun resultat, peut tu maiguiller stp ?

bonjour,
cela fait combien de temps que tu as ce projet en main?

Board Digital Pins Usable For Interrupts
Uno, Nano, Mini, other 328-based 2, 3
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
Micro, Leonardo, other 32u4-based 0, 1, 2, 3, 7
Zero all digital pins, except 4
MKR1000 Rev.1 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Due all digital pins
101 all digital pins

infobarquee:
bonjour,
cela fait combien de temps que tu as ce projet en main?

8h

Mets ton code entre balises.

Tu dois te raccorder sur l'entrée 2 ou 3 pour générer une interruption.
De plus le numéro de l’interruption n'est pas le numéro de l'entrée

attachInterrupt(digitalPinToInterrupt(pluvio), compter, FALLING);

Voila déjà une base de travail!

Comme dit précédemment, les interruptions sur une UNO, c'est uniquement les pin 2 et 3.

Supprime absolument le delay() dans la loop, il bloque tout ton code, et masque les interruptions. Vu le peu de chose que fait le code, tu te retrouve pendant 99,99999% du temps dans le delay.

Il va falloir passer par millis(), regarde l'exemple de l'IDE "Blink without delay"

Derniers point: Choisis mieux le déclencheur de l'interruption, je suis pas sur que "CHANGE" soit bien adapté. (voir du côté de RISING/FALLING)

kamill:
Mets ton code entre balises.

Tu dois te raccorder sur l'entrée 2 ou 3 pour générer une interruption.
De plus le numéro de l’interruption n'est pas le numéro de l'entrée

attachInterrupt(digitalPinToInterrupt(pluvio), compter, FALLING);

Noté, merci je vais essayer comme sa :slight_smile:

Jambe:
Voila déjà une base de travail!

Comme dit précédemment, les interruptions sur une UNO, c'est uniquement les pin 2 et 3.

Supprime absolument le delay() dans la loop, il bloque tout ton code, et masque les interruptions. Vu le peu de chose que fait le code, tu te retrouve pendant 99,99999% du temps dans le delay.

Il va falloir passer par millis(), regarde l'exemple de l'IDE "Blink without delay"

Derniers point: Choisis mieux le déclencheur de l'interruption, je suis pas sur que "CHANGE" soit bien adapté. (voir du côté de RISING/FALLING)

Merci

Comme le dit jambe, ton delay() bloque ton programme pour rien la majorité du temps.
Plutôt que de mettre un delay(), n'affiche que quand compteur a changé.

Voila ce que jai pu faire grace a vos conseils

int pluvio = 2
volatile int compteur = 0;

void setup()
{
 Serial.begin(9600);
 attachInterrupt(0 (pluvio), compter, FALLING);
}

void loop()
{
   Serial.println(compteur);
    
}
 
void compter()
{
 compteur = compteur+1;
}

Cela ne marche toujours pas, cependant toutes les 3mins le microcontroleur doit prendre toutes ses impulsions (par exemple il y eu 8impulsions en 3mins) et les multiplie par 0,204( donc 8*0.204.). Ainsi de suite.. jaimerai avoir quelques informations a ce sujet si vous savez comment faire, merci

Ca m'étonne que tu puisses compiler ton programme. Relis mon mail #12

Jai enlevé le delay

et tu peux compiler?