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