[besoin d'aide dans mon projet] Allumer led via sms

Bonjour j’ai besoin de votre aide

Je dois savoir envoyer un MSG via mon portable qui permet d’ouvrir et de renfermer un relais.Je n’arrive pas a trouver la partie qui puisse lire les caractères et ouvrir le relais.Je suis coincée depuis 1 mois, s’il vous plait aidez moi ! :o :o :o :o

#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include <Ultrasonic.h>
#include <OneWire.h> // Inclusion de la librairie OneWire
#include <SoftwareSerial.h>
#include <String.h>


#define DS18B20 0x28     // Adresse 1-Wire du DS18B20
#define TEAL 0x6
#define vanne2     //pin de connexion de la commande de la vanne


Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
SoftwareSerial SIM900(7, 8);
SoftwareSerial mySerial(7,8);

OneWire ds(5); // Création de l'objet OneWire ds
Ultrasonic ultrasonic(4);
char incoming_char=0;
float temp;
//boolean risquegel=false;
boolean messageEnvoye=false;
boolean activate = false ;
boolean receive = false ;
boolean vidage = false ;
boolean info= false ;

 
// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d'erreur
boolean getTemperature(float *temp){
  byte data[9], addr[8];
  // data : Données lues depuis le scratchpad
  // addr : adresse du module 1-Wire détecté
 
  if (!ds.search(addr)) { // Recherche un module 1-Wire
    ds.reset_search();    // Réinitialise la recherche de module
    return false;         // Retourne une erreur
  }
   
  if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçue
    return false;                        // Si le message est corrompu on retourne une erreur
 
  if (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20
    return false;         // Si ce n'est pas le cas on retourne une erreur
 
  ds.reset();             // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
   
  ds.write(0x44, 1);      // On lance une prise de mesure de température
  delay(800);             // Et on attend la fin de la mesure
   
  ds.reset();             // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
  ds.write(0xBE);         // On envoie une demande de lecture du scratchpad
 
  for (byte i = 0; i < 9; i++) // On lit le scratchpad
    data[i] = ds.read();       // Et on stock les octets reçus
   
  // Calcul de la température en degré Celsius
  *temp = ((data[1] << 8) | data[0]) * 0.0625; 
   
  // Pas d'erreur
  return true;
}
 
// setup()
void setup() {
  mySerial.begin(19200);              
  Serial.begin(19200);  
 
  lcd.begin(16, 2);
  
   pinMode(vanne2, OUTPUT);      //pin en sortie 
 
  digitalWrite(vanne, LOW); 
  

  //after start up the program, you can using terminal to connect the serial of gprs shield,

    //if you input 't' in the terminal, the program will execute SendTextMessage(), it will show how to send a sms message,
 
 

}
 
// loop()
void loop() {
  
  lcd.setBacklight(0x6);
  
   if (Serial.available())
    switch(Serial.read())
   {
     case 't':

       break;
     
   } 
   
   if (mySerial.available())
    Serial.write(mySerial.read());
  
   
  // Lit la température ambiante à ~1Hz
  if(getTemperature(&temp)) {
     
    // Affiche la température
    lcd.setCursor(0,0);
    lcd.print("Temp: ");
    lcd.print(temp);
    lcd.print((char)223); // caractère °
    lcd.print('C');
  }
{
   lcd.setCursor(0,1);
   ultrasonic.MeasureInCentimeters();
   lcd.print("Volume: ");
   lcd.print(ultrasonic.RangeInCentimeters,DEC); 
   lcd.print("CM              ");
}   

  if (temp > 10) {
  risquegel();
  //  else {
//  risquegel = false ;
//  messageEnvoye=false;
//} 
}
}

 
 
void risquegel() {
  
  
  
if (messageEnvoye == false) 
    {
  
     mySerial.print("AT+CMGF=1\r");    
     delay(100);
     mySerial.println("AT + CMGS = \"+33778243716\"");
     delay(100);
     mySerial.println("Attention l'eau risque de geler, voulez vous vider la cuve ?");
     delay(100);
     mySerial.println((char)26);
     delay(100);
     mySerial.println();
     messageEnvoye=true;
     }
     
  }

Avant de vouloir te lancer dans la ligne de code, as-tu fait un diagramme de séquences de la fonction que tu souhaites réaliser ? Depuis le début de ton projet, tu patauges dans ton code et ce dernier est très mal structuré.

Avant de vouloir à tout prix coder, il faut que tu découpes ton projets en différentes fonctions (allumer/éteindre un relai, envoyer/recevoir un sms, ...). Ensuite, essaie de réaliser chaque fonction indépendamment : - allumer/éteindre ton relai - envoyer/recevoir un SMS - ...

Et une fois que tu maitrises chaque fonction unitaire, tu assembles tes fonctions pour finaliser ton projet.

Donc à partir de là, on va commencer par le commencement, sais-tu allumer/éteindre ton relai ?

Oui j’ai fait mon diagramme bien sur et sans exemple je ne sais pas allumer/eteindre mon relai

POST A FERMER !

SebastienB19: POST A FERMER !

bonjour, la raison? tu as trouvé? si oui l'explication pour les autres serait bienvenue

Oui desoler de dire ca a l'improviste effectivement j'ai trouve la solution c'etait une erreur au niveau du void loop une erreur stupide de ma part

SebastienB19:
Bonjour j’ai besoin de votre aide

Je dois savoir envoyer un MSG via mon portable qui permet d’ouvrir et de renfermer un relais.Je n’arrive pas a trouver la partie qui puisse lire les caractères et ouvrir le relais.Je suis coincée depuis 1 mois, s’il vous plait aidez moi ! :o :o :o :o

#include <Wire.h>

#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include <Ultrasonic.h>
#include <OneWire.h> // Inclusion de la librairie OneWire
#include <SoftwareSerial.h>
#include <String.h>

#define DS18B20 0x28    // Adresse 1-Wire du DS18B20
#define TEAL 0x6
#define vanne2    //pin de connexion de la commande de la vanne

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
SoftwareSerial SIM900(7, 8);
SoftwareSerial mySerial(7,8);

OneWire ds(5); // Création de l’objet OneWire ds
Ultrasonic ultrasonic(4);
char incoming_char=0;
float temp;
//boolean risquegel=false;
boolean messageEnvoye=false;
boolean activate = false ;
boolean receive = false ;
boolean vidage = false ;
boolean info= false ;

// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d’erreur
boolean getTemperature(float *temp){
  byte data[9], addr[8];
  // data : Données lues depuis le scratchpad
  // addr : adresse du module 1-Wire détecté

if (!ds.search(addr)) { // Recherche un module 1-Wire
    ds.reset_search();    // Réinitialise la recherche de module
    return false;        // Retourne une erreur
  }
 
  if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l’adresse a été correctement reçue
    return false;                        // Si le message est corrompu on retourne une erreur

if (addr[0] != DS18B20) // Vérifie qu’il s’agit bien d’un DS18B20
    return false;        // Si ce n’est pas le cas on retourne une erreur

ds.reset();            // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
 
  ds.write(0x44, 1);      // On lance une prise de mesure de température
  delay(800);            // Et on attend la fin de la mesure
 
  ds.reset();            // On reset le bus 1-Wire
  ds.select(addr);        // On sélectionne le DS18B20
  ds.write(0xBE);        // On envoie une demande de lecture du scratchpad

for (byte i = 0; i < 9; i++) // On lit le scratchpad
    data[i] = ds.read();      // Et on stock les octets reçus
 
  // Calcul de la température en degré Celsius
  *temp = ((data[1] << 8) | data[0]) * 0.0625;
 
  // Pas d’erreur
  return true;
}

// setup()
void setup() {
  mySerial.begin(19200);             
  Serial.begin(19200);

lcd.begin(16, 2);
 
  pinMode(vanne2, OUTPUT);      //pin en sortie

digitalWrite(vanne, LOW);

//after start up the program, you can using terminal to connect the serial of gprs shield,

//if you input ‘t’ in the terminal, the program will execute SendTextMessage(), it will show how to send a sms message,

}

// loop()
void loop() {
 
  lcd.setBacklight(0x6);
 
  if (Serial.available())
    switch(Serial.read())
  {
    case ‘t’:

break;
   
  }
 
  if (mySerial.available())
    Serial.write(mySerial.read());
 
 
  // Lit la température ambiante à ~1Hz
  if(getTemperature(&temp)) {
   
    // Affiche la température
    lcd.setCursor(0,0);
    lcd.print("Temp: ");
    lcd.print(temp);
    lcd.print((char)223); // caractère °
    lcd.print(‘C’);
  }
{
  lcd.setCursor(0,1);
  ultrasonic.MeasureInCentimeters();
  lcd.print("Volume: ");
  lcd.print(ultrasonic.RangeInCentimeters,DEC);
  lcd.print("CM              ");
}

if (temp > 10) {
  risquegel();
  //  else {
//  risquegel = false ;
//  messageEnvoye=false;
//}
}
}

void risquegel() {
 
 
 
if (messageEnvoye == false)
    {
 
    mySerial.print(“AT+CMGF=1\r”);   
    delay(100);
    mySerial.println("AT + CMGS = “+33778243716"”);
    delay(100);
    mySerial.println(“Attention l’eau risque de geler, voulez vous vider la cuve ?”);
    delay(100);
    mySerial.println((char)26);
    delay(100);
    mySerial.println();
    messageEnvoye=true;
    }
   
  }