Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mode Automatique et Manuel

    6 mars 2019 à 21:54:49

    Bonjour à tous 
    je suis un élève et j'ai pour partie de projet de faire descendre ou monter un store ( volet électrique ) avec des relais.
    je dois faire 2 modes, un automatique en fonction de l'indice UV et un mode manuel avec l'application app inventor, du coté de l'application pas de problème j'arrive à allumer des leds etc... j'ai réussis a faire baisser et monter le store avec l'application ( en mode manuel ) et aussi en mode automatique avec l'indice UV, mais quand j'assemble les 2 programmes sa ne marche plus voici mon code
    char val;
    char valManuel;
    int UV = A0;
    int Monter = 4;
    int Descendre = 8;
    
    
    void setup() {
    
      Serial.begin(9600);
      pinMode(Monter, OUTPUT);
      pinMode(Descendre, OUTPUT);
      digitalWrite(Descendre, LOW);
      digitalWrite(Monter, LOW);
    }
    
    void loop() {
    
     while (Serial.available() > 0) 
      {
        val = Serial.read();
      }
      if ( val == 'z' ) {
        void Mode_Auto();
      }
      if ( val == 's' ) {
        void Mode_Manuel();
      } 
      Serial.print((IndiceUV() * 1000 / 4.3 - 83 ) / 21 * 0.001);
    
    }
    
    int IndiceUV() {
    
      int ValUV = 0;
      long  sum = 0;
    
      for (int i = 0; i < 1024; i++)
      {
        ValUV = analogRead(UV);
        sum = ValUV + sum;
        delay(2);
      }
      long meanVal = sum / 1024;
      return (meanVal);
    }
    
    
    void Mode_Manuel() {
    
      while (Serial.available() > 0) 
      {
        val = Serial.read();
      }
    
      if ( valManuel == 'd')
      {
        digitalWrite(Descendre, HIGH);
      }
      else {
        digitalWrite(Descendre, LOW);
      }
    
      if (valManuel == 'c')
      {
        digitalWrite(Monter, HIGH);
      }
      else {
        digitalWrite(Monter, LOW);
      }
    
      if (valManuel == 'e')
      {
        digitalWrite(Descendre, LOW);
        digitalWrite(Monter, LOW);
      }
    }
    
    void Mode_Auto() {
    
      if ((( IndiceUV()* 1000 / 4.3 - 83 ) / 21 * 0.001) == 0 )
      {
        digitalWrite(Descendre, LOW);
        digitalWrite(Monter, LOW);
      }
    
      if ((( IndiceUV()* 1000 / 4.3 - 83 ) / 21 * 0.001) > 2 )
      {
        digitalWrite(Descendre, HIGH);
      }
      else {
        digitalWrite(Descendre, LOW);
      }
    
      if ((( IndiceUV()* 1000 / 4.3 - 83 ) / 21 * 0.001)  > 0.01)
      {
        digitalWrite(Monter, HIGH);
      }
      else {
        digitalWrite(Monter, LOW);
      }
    }
    
    Merci de votre aide

    -
    Edité par RidaDesLrs 6 mars 2019 à 22:01:30

    • Partager sur Facebook
    • Partager sur Twitter
      6 mars 2019 à 22:20:13

      Je ne connais pas grand chose en arduino, mais les lignes 24 et 27 sont plus que suspectes vu qu'au lieu d'appeler les fonctions, tu les déclares (ce qui n'a rien à faire à cet endroit).

      Copie ces lignes en début de programme et supprime le "void" aux lignes 24 et 27. Ca devrait déjà aller un peu mieux.

      • Partager sur Facebook
      • Partager sur Twitter
        6 mars 2019 à 22:34:27

        j'avais complètement oublié ce détail

        j'ai donc appliqué ton conseil et sa marche merci mais que pour le mode automatique

        edit 

        j'ai trouvé une autre erreur à la ligne 53 à la place de val faut que j'ecris valManuel 

        mais même après cette correction sa ne marche toujours pas pour le mode manuel

        -
        Edité par RidaDesLrs 7 mars 2019 à 12:20:45

        • Partager sur Facebook
        • Partager sur Twitter

        Mode Automatique et Manuel

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown