SMS + GPS

bonjour je suis en terminal STI2D option SIN , nous avons un projet de bac qui consiste a envoyer un message avec des coordonnées recuperer par un GPS lorsque le fauteil roulant est trop incliner ( pour signaler un chute) , les codes marchent bien séparément mais fusionner cela ne marche pas.
nous voulons donc les fusionner.

nous utilisons : - un "SIM 900" pour les sms

  • un "GY-NE06MV2" comme GPS

merci de votre aide , bonne journee

code GPS :

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;  // definie les baud a 9600

// introduit tiny GPS ++
TinyGPSPlus gps;

// connection au peripherique GPS
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
     Serial.begin(9600);
     ss.begin(GPSBaud);
}

void loop()
{
     // des que la sequence d'avant est correctement etablie une phrase s'affiche 
     while (ss.available() > 0)
       if (gps.encode(ss.read()))
         displayInfo();

     if (millis() > 5000 && gps.charsProcessed() < 10)
     {
       Serial.println(F("GPS non detecter , verfier le cablage ")); // si le GPS n'est pas detecter ecrit "virifier le cablage"
       while(true);
     }
}

void displayInfo() //ouvre le display pour ecrire les information ci dessous 
{
     Serial.print(F("Location: ")); // ecrit " localitation"
     if (gps.location.isValid())
     {
       Serial.print(gps.location.lat(), 6); // ecrit la latitude
       Serial.print(F(","));
       Serial.print(gps.location.lng(), 6); // ecrit la longitude
     }
     else
     {
       Serial.print(F("INVALIDE")); // si cela ne marche pas ecrit "invalide"
     }
     Serial.println(); //ecrit le tous en boucle
}

code inclinometre + GPS :

#include <Wire.h>      // Permet de communiquer avec les périphériques I2C (pour l'écran LCD)
#include <ADXL335.h>   // Inclut la bibliothèque de l'accéléromètre
#include <rgb_lcd.h>   // Inclut la bibliothèque de l'écran LCD
#include <SoftwareSerial.h>

rgb_lcd lcd;
SoftwareSerial SIM900(7, 8); // Configure software serial port

// Définit la luminosité de la couleur rouge, verte et bleue
const int colorR = 255;   
const int colorG = 255; 
const int colorB = 255; 

// définit x, y et z sur les entrées analogique 2, 1 et 0
const int xPin = 2;    
const int yPin = 1;
const int zPin = 0;

// Valeur minimale et maximale de l'accéléromètre immobile
int minVal = 265;      
int maxVal = 402;      

// Pour lire x, y et z jusqu'à 4 nombres après la virgule
double x;              
double y;             
double z;              

// Valeur minimale et maximale de X et Y pour détecter la chute
int maxX = 50;         
int maxY = 50;
int minX = -50;
int minY = -50;

int variable = 0;      // Variable pour sms

void setup()
{
SIM900.begin(19200);                    // Arduino communicates with SIM900 GSM shield at a baud rate of 19200, make sure that corresponds to the baud rate of your module
delay(20000);                           // Give time to your GSM shield log on to network
sendSMS();                              // Send the SMS
Serial.begin(9600);                     // Nombre de symboles transmissit par seconde
lcd.begin(16, 2);                       // Nombre de lignes et de colonnes sur l'écran LCD
lcd.setRGB(colorR, colorG, colorB);     // Applique les luminosités définit précedemment
}

void sendSMS()
{
SIM900.print("AT+CMGF=1\r"); // AT command to set SIM900 to SMS mode
delay(100);
SIM900.println("AT + CMGS = \"0659166691\""); 
delay(100);
SIM900.println("message via arduino"); 
delay(100);
SIM900.println((char)26); // End AT command with a ^Z, ASCII code 26 
delay(100);
SIM900.println();
delay(5000); // Give module time to send SMS
}

void loop()
{
// Lit les valeurs analogiques de l'accéléromètre
int xRead = analogRead(xPin);
int yRead = analogRead(yPin);
int zRead = analogRead(zPin);

// Convertit les valeurs lues en degrés de -90 à 90 (pour atan2)
int xAng = map(xRead, minVal, maxVal, -90, 90);
int yAng = map(yRead, minVal, maxVal, -90, 90);
int zAng = map(zRead, minVal, maxVal, -90, 90);


// Calcule les 360 degrés avec atan2 (-yAng, -zAng), atan2 renvoie la valeur de -π à π (radians), ensuite on convertit les radians en degrés
x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);

// Calibrage suivant les valeurs de l'accéléromètre à plat
x = x - 185;
y = y - 184;

// Pour éviter les erreurs suite au calibrage
if (x < -180)
{
  x = x + 360;
}
if (y < -180)
{
  y = y + 360;
}

// Affichage des valeurs de x et y pour vérifier si l'accéléromètre fonctionne
lcd.setCursor(0,0);
lcd.print("x: ");
lcd.print(x);
lcd.setCursor(0,1);
lcd.print("y: ");
lcd.print(y);

delay(100); // Pour ralentir l'affichage (plus facile à lire)

if (((y < minY) || (y > maxY)) || ((x < minX) || (x > maxX)))   // Conditions pour que la led s'allume
{
  variable = variable + 1;
  if (variable == 1)
  {
    sendSMS();
  }
}
else
{
  variable = 0;
}
}

Google "combine two arduino sketches"