IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Problème code arduino


Sujet :

Arduino

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème code arduino
    Bonjour j'ai créé un programme arduino pour faire un arrosage automatique. Sur app inventor j'ai créé une appli qui me permet de passer d'un mode à l'autre c'est à dire mode automatique, manuel et OFF. Le mode manuel déclenche la pompe, le mode OFF l'éteint et pour le mode automatique le relai se déclenche si le capteur détecté une valeur supérieure à 500. Mon problème c'est qu'il y a aucun bouton qui marche a partie de l'appli pourtant j'ai testé les composant et l'appli marche très bien je change de code. C'est pour cela que j'en déduit qu'il y a problème dans le code.

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    #include <LiquidCrystal.h>
    #include <SoftwareSerial.h>
     
    SoftwareSerial HC06(11,10); // pin data module bluetouth
    String messageRecu;
     
    char mode; // variable mode qui prend la valeur des messages envoyés par bluetouth
     
    LiquidCrystal lcd(2,3,4,5,6,7); //ls valeurs correspondent aux pins de l'arduino
     
    const int relais = 12; //le pin numérique du cateur est branché sur le pin 2 de l'arduino
    const int analog_capteur = A1; //le pin analogique du capteur est branché sur le pin A1 de l'arduino
    const int LED_rouge = 13; //la led est branché sur le pin numérique 2 de l'arduino
     
    int ValeurCapteur = 0;
    int seuil_alerte = 500; // valeur peux être changé
     
    void setup() 
    {
      pinMode(relais,OUTPUT);
      pinMode(LED_rouge, OUTPUT);
     
      Serial.begin(9600);
      HC06.begin(9600);
     
      lcd.begin(20,4);
      lcd.clear();
      delay(10);
      lcd.print("Mode : ");
      lcd.setCursor(2,0);
      lcd.print("Hum.Terre : ");
    }
     
    void loop() 
    {
      lcd.setCursor(1,8);
      lcd.print(ValeurCapteur);
      delay(10);
     
      while (HC06.available())
       {char c = HC06.read();
        messageRecu += c;
       }
     
      if (messageRecu.length()>0)
       {
        Serial.println(messageRecu);
     
        if (messageRecu == "manuel")    //mode manuel
          {
            lcd.setCursor(1,8);
            lcd.print("           ");
            lcd.print("Manuel");
            delay(10);
            digitalWrite(relais, HIGH);
            digitalWrite(LED_rouge, HIGH);
          }
     
        if (mode == "OFF") //mode OFF
          {
            lcd.setCursor(1,8);
            lcd.print("           ");
            lcd.print("OFF");
            delay(10);
            digitalWrite(relais, LOW);
            digitalWrite(LED_rouge, HIGH);
          }
        if(mode == "automatique") //mode automatique
          {
            lcd.setCursor(1,8);
            lcd.print("           ");
            lcd.print("Automatique");
            delay(10);
     
          while (mode == "Automatique")
           {
             ValeurCapteur = analogRead(analog_capteur); //ValeurCapteur et la variable qui prend les valeurs de la pin analogique A1
             if(ValeurCapteur > seuil_alerte) //si la valeur de ValeurCapteur est plus haute que la limite alors pompe ON
              {
                digitalWrite(relais, HIGH);
                digitalWrite(LED_rouge, HIGH);
                delay(20000); //temps de fonctionnement sec
                digitalWrite(relais, LOW);
                digitalWrite(LED_rouge, LOW);
                delay(900000); //temps avant que le capteur refasse une vérification. 15 min
              }
           }
          }
       }
      delay(500); //temps avant que la void loop se refasse
    }
     
    //max temps pour delay en milliseconde 4 294 967 295

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Salut,
    Je n'ai pas tout regardé mais tu as un problème avec la variable char mode;.

    - Je ne vois pas quand tu affectes une valeur à cette variable ? Tu la déclares sans l'initialiser (impossible de savoir ce qu'il y a dedans) puis tu tentes de la comparer avec quelque chose.
    - Etant donné que mode est une variable de type char ne pouvant contenir qu'un seul caractère, ceci est impossible à faire : mode == "OFF"

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    J'irai même plus loin, non seulement tu n'affecte pas de valeur à mode mais en plus tu compare mode à des chaînes de caractères ("OFF", "automatique", etc...).
    Tu dois donc déclarer mode comme un tableau de chaînes !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char mode[NOMBREMAXIMUMDECARACTERES];
    A+
    Eric

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par EricFo Voir le message
    Tu dois donc déclarer mode comme un tableau de chaînes !!
    Oui enfin faudrait préciser aussi que faudrait faire du strcmp....

    Mais bon je le déconseillerai même si les avr atmel sont pas des mauvais microcontrôleurs , je déconseillerais un test de caractères.
    Je conseillerais des enum tout simplement.

Discussions similaires

  1. Problème avec code arduino
    Par mahaman bahari dans le forum Arduino
    Réponses: 2
    Dernier message: 10/05/2016, 19h03
  2. Problème code VBA :)
    Par Freygolow dans le forum Access
    Réponses: 4
    Dernier message: 17/05/2007, 15h43
  3. Probléme code C
    Par conceicao dans le forum C
    Réponses: 12
    Dernier message: 23/01/2007, 13h44
  4. Réponses: 6
    Dernier message: 23/12/2006, 12h46
  5. [Problème code] Afficher/Masquer div
    Par glloq8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/03/2006, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo