[Resolu] Double IF pour capteur pH et ultrason


bonjour à tous,
je viens vers vous car j'ai un petit problème. je dois remplir et vider un aquarium automatiquement en fonction du ph et de la qualité de l'eau via arduino.
ce que je dois faire c'est, par exemple, si la valeur ph excède 7, que la pompe vide automatiquement l'aquarium mais qu'il reste un tier de l'eau pour les poissons.
pour cela j'utilise un capteur ultrason, qui placé au dessus et orienté vers le fond de l'aquarium, pourra mesurer la distance et donc déterminer si l'aquarium est rempli ou aux 2/3 vide.
le problème c'est que je ne sais pas comment coder ça. j'ai finit tout le code mais ça je ne trouve pas.
en gros la syntaxe est :
 si
 ph > 7
    activer le relais (ou la pompe sera connectée)
          si distance du capteur avec l'eau > 2/3 ne rien faire
          si distance du capteur avec l'eau < 2/3 stopper le vidage
 ph < 7 ne rien faire

je ne veux pas la réponse, juste quelques petites infos ou la commande à utiliser svp (j'avais pensé à while)
je met le code si ça peut vous aider :
code: [select]
int trig = 12;
int echo = 11;
int relay1 = 8;
long lecture_echo;
long cm;
#define sensorpin 0         
unsigned long int avgvalue; 
float b;
int buf[10],temp;

void setup()
{
  pinmode(trig, output);
  pinmode(relay1, output);
  digitalwrite(trig, low);
  pinmode(echo, input);
  serial.begin(9600);
}

void loop()
{
  for(int i=0;i<10;i++)       
  {
    buf[i]=analogread(sensorpin);
    delay(10);
  }
  for(int i=0;i<9;i++)       
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgvalue=0;
  for(int i=2;i<8;i++)                      //prend la valeur moyenne de 6 valeurs
    avgvalue+=buf[i];
  float phvalue=(float)avgvalue*5.0/1024/6; //converti la valeur analogique en millivolts
  phvalue=3.5*phvalue;                      //converti les millivolts en valeur ph
  serial.print("    ph:"); 
  serial.print(phvalue,2);
  serial.println(" ");
  digitalwrite(13, high);       
  delay(800);
  digitalwrite(13, low);

  digitalwrite(trig, high);
  delaymicroseconds(10);
  digitalwrite(trig, low);
  lecture_echo = pulsein(echo, high);
  cm = lecture_echo / 58;
  serial.print("distance en cm : ");
  serial.println(cm);
  delay(1000);
 
  if (phvalue < 7)  {
    digitalwrite (relay1, high);
    }
  if (phvalue > 7)  {
    digitalwrite (relay1, low);
    }
}

merci d'avance

code: [select]
if(ph>7) {

while(niveau>1/3) fairetournerlapompe;

couperpompe;

}


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > [Resolu] Double IF pour capteur pH et ultrason


arduino

Comments