Fonction auto

Bonjour a tous ,
Je reviens une nouvelle fois vers vous
J'ai laisser tomber mon esp pour un hc06
Pour commander mes deux ventilateur de mon atelier
J'ai commencé par un montage simple
Un dht22 dans un des ventilateurs qui pilotait les deux en même temps
Le fonctionnement etait simple en dessous d'une certaine température les ventilateurs étaient éteints
Au delà de la consigne ils ce m'étaient en route
Maintenant j'ai un relais par ventilateur
Et me suis lancer a faire une application pour communiquer avec le module hc06
Que je puisse commander manuellement ou automatiquement
En manuel je pilote le ventilateur droit ou gauche en automatique les deux tourne en fonction des consignes
C'est le passage entre les deux qui me bloque
Voila mon code sur une base de tutos pris a droite et gauche

#include <SoftwareSerial.h>
#include "DHT.h"
SoftwareSerial HC06(11,10);//rx 10 tx 11
 const char VENTILO_GAUCHE = 2;
 const char VENTILO_DROIT = 3;
 String messageRecu;
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
   HC06.begin(9600);  
 pinMode(VENTILO_GAUCHE, OUTPUT);
 digitalWrite(VENTILO_GAUCHE,!LOW);  
 pinMode(VENTILO_DROIT, OUTPUT);
 digitalWrite(VENTILO_DROIT,!LOW);
dht.begin();
}

void loop() {
 float t = dht.readTemperature();
 float f = dht.readTemperature(true);;
while(HC06.available())
     {
       delay(3);
       char c = HC06.read();
       messageRecu += c;
        HC06.println(t,1);}
if (messageRecu =="TEMP"){HC06.print(t);}
if (messageRecu.length() >0){
if (messageRecu == "MANU");{

       if (messageRecu == "VD:1")     
         {digitalWrite(VENTILO_DROIT, !HIGH);}
       if (messageRecu == "VD:0")
         {digitalWrite(VENTILO_DROIT, !LOW);}
         else
     { if (messageRecu == "VG:1")     
         {digitalWrite(VENTILO_GAUCHE, !HIGH);}
       if (messageRecu == "VG:0")
         {digitalWrite(VENTILO_GAUCHE, !LOW);}}
         messageRecu="";}
else if (messageRecu == "AUTO");
{if ( t<39 ) 
{digitalWrite(VENTILO_GAUCHE,!LOW);
digitalWrite(VENTILO_DROIT,!LOW);}
else
{if (t >39 ) 
{digitalWrite(VENTILO_GAUCHE,!HIGH);
digitalWrite(VENTILO_DROIT,!HIGH);}}
}
}   
}
}

Ainsi que les blocs app inventor de mon application

D'avance merci pour votre aide

Ton code est très mal présenté, pour ne pas dire illisible.
Fais une indentation correcte, STP.

J'ai essayer de rendre mon code un peu plus lisible

#include <SoftwareSerial.h>
#include "DHT.h"
SoftwareSerial HC06(11,10);//rx 10 tx 11
 const char VENTILO_GAUCHE = 2;
 const char VENTILO_DROIT = 3;
 String messageRecu;
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
   HC06.begin(9600);  
 pinMode(VENTILO_GAUCHE, OUTPUT);
 digitalWrite(VENTILO_GAUCHE,!LOW);  
 pinMode(VENTILO_DROIT, OUTPUT);
 digitalWrite(VENTILO_DROIT,!LOW);
dht.begin();
}

void loop() {
 float t = dht.readTemperature();//on lit la temperature 
while(HC06.available())
     {
       delay(3);
       char c = HC06.read();
       messageRecu += c;
if (messageRecu =="TEMP"){HC06.print(t);}//on affiche la temperature sur l'application
if (messageRecu.length() >0)//on lit le message reçu 
  /*****************************************************/
  /*                  partie commande manuelle                                           */
  /*****************************************************/ 
{if (messageRecu == "MANU");//si on reçoit le message MANU execute les commandes ci dessous

{ if (messageRecu == "VD:1")     
         {digitalWrite(VENTILO_DROIT, !HIGH);}//alume le ventilateur droit
 if (messageRecu == "VD:0")
         {digitalWrite(VENTILO_DROIT, !LOW);}//eteint le ventilateur droit
else
{ if (messageRecu == "VG:1")     
         {digitalWrite(VENTILO_GAUCHE, !HIGH);}//alume le ventilateur gauche
 if (messageRecu == "VG:0")
         {digitalWrite(VENTILO_GAUCHE, !LOW);}}//eteint le ventilateur gauche
         messageRecu="";}
 /*****************************************************/
 /*                  partie commande automatique                                     */
 /*****************************************************/
         
else if (messageRecu == "AUTO");//si tu reçois le message AUTO execute les commandes ci dessous

{if ( t<39 ) //si la temperature a l'interieur du ventilateur est inferieur a 39 degrés 

{digitalWrite(VENTILO_GAUCHE,!LOW);//eteint le ventilateur gauche
digitalWrite(VENTILO_DROIT,!LOW);}//eteint le ventilateur droit
else
{if (t >39 ) //si la temperature a l'interieur du ventilateur est superieur a 39 degrés 

{digitalWrite(VENTILO_GAUCHE,!HIGH);//alume le ventilateur gauche
digitalWrite(VENTILO_DROIT,!HIGH);}}//alume le ventilateur droit
}
}   
}
}

Bonjour,

Voici ce que tu écris:

    { if (messageRecu == "MANU");//si on reçoit le message MANU execute les commandes ci dessous

      { if (messageRecu == "VD:1")
  • il ne faut pas de point virgule à la fin du premier if
  • si messageRecu est égal à "MANU", il ne peut pas être égal à "VD:1". Il y a quelque chose qui ne va pas.

+1 avec biggil, indentes correctement ton code, on n'y comprend rien. Utilises CTRL T dans l'IDE arduino.

Merci pour ta réponse
Donc si je comprends bien c'est le meme problème pour AUTO

 else if (messageRecu == "AUTO");//

oui, c'est la même chose