probleme compilation geobox

bonjour

je suis entrain de me faire un boite avec

  • arduino uno
  • afficheur 16x2
  • servo moteur sur pin 9
    -module gps (gy-gps6mu2 ou v2 ) rx sur 3 tx sur 2
    -un bouton d’allumage

mon code me mes une erreur et je comprend pas pourquoi

 #include <math.h>
 #include <LiquidCrystal.h>
 #include <TinyGPS++.h>
 #include <SoftwareSerial.h>
 SoftwareSerial mySerial (3, 2);
 TinyGPS++ GPS (&mySerial);              
 #define GPSECHO false // faire vrai pour déboguer GPS
 boolean usingInterrupt = false;
 void useInterrupt(boolean);
 
 // Servo
 #include <PWMServo.h>
 PWMServo servoLatch;
 
 // Déclarations
 const float deg2rad = 0.01745329251994;
 float const Rearth = 6.371000,0;  // Peut remplacer avec 3958,75 mi, 6370,0 km, ou 3440,06 NM
 float  range = 3000;  // La distance d'ici à là
 String here;  // Lire à partir de GPS
 
 // Initialiser la bibliothèque avec les numéros des broches d'interface
 LiquidCrystal LCD (7, 8, 6, 10, 11, 12);
 
 int gpsWasFixed = HIGH;  // Ne les GPS ont une solution?
 int ledFix = 4;  // Broches pour LED fixe
 int servoPin = 9;  // Broches pour servo
 int Servolock = 110;  // Angle (deg) du servo "verrouillé"
 int servoUnlock = 0;  // Angle (deg) du servo "déverrouillé"
 
 String there = "N38 51,409, W077 01,328";  // Emplacement désiré va ici.  Assurez-vous que vous utilisez la même syntaxe et le nombre de caractères
 
 void setup()
 {
   servoLatch.attach (SERVO_PIN_A);
   servoLatch.write (Servolock);
   delay (50);
   lcd.begin (16, 2);
   Serial.begin (115200);
   Serial.println ( "Debug GPS Test:");
 
   GPS.begin (9600);
   GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude
   GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz
   useInterrupt (true);  // Lit les données de cuisson à la vapeur dans un fond
   delay(1000);
  
 
 }
 
 void loop () {
   // Parse GPS et recalculer RANGE
   if (GPS.newNMEAreceived ()) {
     if (! GPS.parse (GPS.lastNMEA ())) // définit aussi le drapeau newNMEAreceived () false
       return;  // Nous ne pouvons manquer d'analyser une phrase dans ce cas, nous devrions attendre une autre
   }
     if (GPS.fix) {
     gpsWasFixed = HIGH;
     digitalWrite(ledFix, HIGH);
 
  
     here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);
     range = haversine(string2lat(here), string2lon(here), string2lat(there), string2lon(there));
    Serial.print("Here: ");                                        //for GPS debug
    Serial.print(here);
    Serial.print("There: ");
    Serial.println(there);
    Serial.print("Range: ");
    Serial.print(range);
    Serial.println("m");
    
     lcd.clear ();
     lcd.setCursor (0,0);
     lcd.print ( "Distance jusqu'à LOYL");
     //lcd.setCursor(0,1);
     //lcd.print ( "");
     lcd.setCursor (0,1);
     lcd.print (range;
 
     delay(500);
   }
   else {                      // Pas de GPS FIX prendre boîte à l'extérieur
     lcd.clear ();
     lcd.setCursor (0,0);
     lcd.print ( "Bonjour Jenny!");
     lcd.setCursor (0,1);
     lcd.print ( "Prends-moi dehors!");
     delay(200);
   }
  
  if (range < 20.0){
    servoLatch.write(servoUnlock);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Jenny: Will you ");
    lcd.setCursor(0,1);
    lcd.print("Marry Me?!");
    delay(5000);
   }
 }
 
 
 SIGNAL (TIMER0_COMPA_vect) {
   // Interrompre est appelé une fois par milliseconde, cherche de nouvelles données GPS, et le stocke
   char c = GPS.read ();
   if (GPSECHO)
     if (c) UDR0 = c;  
 }
 
 void useInterrupt(boolean v) {
  if (v) {
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
    usingInterrupt = true;
  } else {
    TIMSK0 &= ~_BV(OCIE0A);
    usingInterrupt = false;
  }
}
 
String int2fw (int x, int n) {
  // returns a string of length n (fixed-width)
  String s = (String) x;
  while (s.length() < n) {
    s = "0" + s;
  }
  return s;
}
 
String gps2string (String lat, float latitude, String lon, float longitude) {
  // returns "Ndd mm.mmm, Wddd mm.mmm";
  int dd = (int) latitude/100;
  int mm = (int) latitude % 100;
  int mmm = (int) round(1000 * (latitude - floor(latitude)));
  String gps2lat = lat + int2fw(dd, 2) + " " + int2fw(mm, 2) + "." + int2fw(mmm, 3);
  dd = (int) longitude/100;
  mm = (int) longitude % 100;
  mmm = (int) round(1000 * (longitude - floor(longitude)));
  String gps2lon = lon + int2fw(dd, 3) + " " + int2fw(mm, 2) + "." + int2fw(mmm, 3);
  String myString = gps2lat + ", " + gps2lon;
  return myString;
};
/*
float string2radius (String myString) {
  // returns a floating-point number: e.g. String myString = "Radius: 005.1 NM";
  float r = ((myString.charAt(8) - '0') * 100.0) + ((myString.charAt(9) - '0') * 10.0) + ((myString.charAt(10) - '0') * 1.0) + ((myString.charAt(12) - '0') * 0.10);
  return r;
};*/
 
float string2lat (String myString) {
  // returns radians: e.g. String myString = "N38 58.892, W076 29.177";
  float lat = ((myString.charAt(1) - '0') * 10.0) + (myString.charAt(2) - '0') * 1.0 + ((myString.charAt(4) - '0') / 6.0) + ((myString.charAt(5) - '0') / 60.0) + ((myString.charAt(7) - '0') / 600.0) + ((myString.charAt(8) - '0') / 6000.0) + ((myString.charAt(9) - '0') / 60000.0);
  //Serial.print("float lat: ");
  //Serial.println(lat);
  lat *= deg2rad;
  if (myString.charAt(0) == 'S')
    lat *= -1;                                                           // Correct for hemisphere
  return lat;
};
 
float string2lon (String myString) {
  // returns radians: e.g. String myString = "N38 58.892, W076 29.177";
  float lon = ((myString.charAt(13) - '0') * 100.0) + ((myString.charAt(14) - '0') * 10.0) + (myString.charAt(15) - '0') * 1.0 + ((myString.charAt(17) - '0') / 6.0) + ((myString.charAt(18) - '0') / 60.0) + ((myString.charAt(20) - '0') / 600.0) + ((myString.charAt(21) - '0') / 6000.0) + ((myString.charAt(22) - '0') / 60000.0);
  //Serial.print("float lon: ");
  //Serial.println(lon);
  lon *= deg2rad;
  if (myString.charAt(12) == 'W')
    lon *= -1;                                                           // Correct for hemisphere
  return lon;
};
 
 
float haversine (float lat1, float lon1, float lat2, float lon2) {
  // returns the great-circle distance between two points (radians) on a sphere
  float h = sq((sin((lat1 - lat2) / 2.0))) + (cos(lat1) * cos(lat2) * sq((sin((lon1 - lon2) / 2.0))));
  float d = 2.0 * rEarth * asin (sqrt(h)); 
  //Serial.println(d);
  return d;
  
};

Bonjour,

Quelle est l'erreur qui s'affiche ?

tout sa :confused:

simple_test:7: error: 'TinyGPS' does not name a type

  TinyGPS++ GPS (&mySerial);

  ^

simple_test:18: error: expected unqualified-id before numeric constant

  float const Rearth = 6.371000,0;  // Peut remplacer avec 3958,75 mi, 6370,0 km, ou 3440,06 NM

                                ^

C:\Users\adrien\Desktop\simple_test\simple_test.ino: In function 'void setup()':

simple_test:38: error: 'lcd' was not declared in this scope

    lcd.begin (16, 2);

    ^

simple_test:42: error: 'GPS' was not declared in this scope

    GPS.begin (9600);

    ^

simple_test:43: error: 'PMTK_SET_NMEA_OUTPUT_RMCGGA' was not declared in this scope

    GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude

                     ^

simple_test:44: error: 'PMTK_SET_NMEA_UPDATE_1HZ' was not declared in this scope

    GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz

                     ^

C:\Users\adrien\Desktop\simple_test\simple_test.ino: In function 'void loop()':

simple_test:53: error: 'GPS' was not declared in this scope

    if (GPS.newNMEAreceived ()) {

        ^

simple_test:57: error: 'GPS' was not declared in this scope

      if (GPS.fix) {

          ^

simple_test:72: error: 'lcd' was not declared in this scope

      lcd.clear ();

      ^

simple_test:78: error: expected ')' before ';' token

      lcd.print (range;

                      ^

simple_test:83: error: 'lcd' was not declared in this scope

      lcd.clear ();

      ^

simple_test:94: error: 'lcd' was not declared in this scope

     lcd.clear();

     ^

C:\Users\adrien\Desktop\simple_test\simple_test.ino: In function 'void __vector_14()':

simple_test:106: error: 'GPS' was not declared in this scope

    char c = GPS.read ();

             ^

C:\Users\adrien\Desktop\simple_test\simple_test.ino: In function 'float haversine(float, float, float, float)':

simple_test:177: error: 'rEarth' was not declared in this scope

   float d = 2.0 * rEarth * asin (sqrt(h)); 

                   ^

Utilisation de la bibliothèque LiquidCrystal version 1.0.5 dans le dossier: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal 
Utilisation de la bibliothèque TinyGPSPlus-0.94b prise dans le dossier : C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b (legacy)
Utilisation de la bibliothèque SoftwareSerial version 1.0 dans le dossier: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial 
Utilisation de la bibliothèque PWMServo version 2.1 dans le dossier: C:\Users\adrien\Desktop\arduino\libraries\PWMServo 
exit status 1
'TinyGPS' does not name a type

Lit les erreurs une à une et tu résoudra ton problème.

Dès le début tu t'apercevras que ton objet GPS est mal déclaré, donc toutes les instructions relatives à l'objet GPS sont foireuses. (TinyGPSPlus au lieu de TinyGPS++)

Tu déclares aussi l'objet LCD mais tu l'appelle lcd dans le reste du code, le Langage C est sensible à la casse.

juste les majuscule

sa y joue beaucoup

et la il me reste sa ta une idee jai mis TinyGPS++ sa me fait pariel

C:\Users\adrien\Desktop\simple_test\simple_test.ino:4:26: fatal error: TinyGPSPlus.h: No such file or directory

  #include <TinyGPSPlus.h>

                          ^

compilation terminated.

Non non l'include était bon, il s'écrit bien avec ++.

C'est quand tu déclares ton objet GPS,
Il faut TinyGPSPlus GPS au lieu de TinyGPS++ GPS

c est pire :o

boite:7: error: no matching function for call to 'TinyGPSPlus::TinyGPSPlus(SoftwareSerial*)'

  TinyGPSPlus GPS (&mySerial);  

                            ^

C:\Users\adrien\Desktop\arduino\boite\boite.ino:7:28: note: candidates are:

In file included from C:\Users\adrien\Desktop\arduino\boite\boite.ino:4:0:

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:217:3: note: TinyGPSPlus::TinyGPSPlus()

   TinyGPSPlus();

   ^

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:217:3: note:   candidate expects 0 arguments, 1 provided

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note: constexpr TinyGPSPlus::TinyGPSPlus(const TinyGPSPlus&)

 class TinyGPSPlus

       ^

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note:   no known conversion for argument 1 from 'SoftwareSerial*' to 'const TinyGPSPlus&'

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note: constexpr TinyGPSPlus::TinyGPSPlus(TinyGPSPlus&&)

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note:   no known conversion for argument 1 from 'SoftwareSerial*' to 'TinyGPSPlus&&'

boite:18: error: expected unqualified-id before numeric constant

  float const Rearth = 6.371000,0;  // Peut remplacer avec 3958,75 mi, 6370,0 km, ou 3440,06 NM

                                ^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'void setup()':

boite:41: error: 'class TinyGPSPlus' has no member named 'begin'

    GPS.begin (9600);

        ^

boite:42: error: 'class TinyGPSPlus' has no member named 'sendCommand'

    GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude

        ^

boite:42: error: 'PMTK_SET_NMEA_OUTPUT_RMCGGA' was not declared in this scope

    GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude

                     ^

boite:43: error: 'class TinyGPSPlus' has no member named 'sendCommand'

    GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz

        ^

boite:43: error: 'PMTK_SET_NMEA_UPDATE_1HZ' was not declared in this scope

    GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz

                     ^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'void loop()':

boite:52: error: 'class TinyGPSPlus' has no member named 'newNMEAreceived'

    if (GPS.newNMEAreceived ()) {

            ^

boite:53: error: 'class TinyGPSPlus' has no member named 'parse'

      if (! GPS.parse (GPS.lastNMEA ())) // définit aussi le drapeau newNMEAreceived () false

                ^

boite:53: error: 'class TinyGPSPlus' has no member named 'lastNMEA'

      if (! GPS.parse (GPS.lastNMEA ())) // définit aussi le drapeau newNMEAreceived () false

                           ^

boite:56: error: 'class TinyGPSPlus' has no member named 'fix'

      if (GPS.fix) {

              ^

boite:58: error: 'ledFix' was not declared in this scope

      digitalWrite(ledFix, HIGH);

                   ^

boite:61: error: 'class TinyGPSPlus' has no member named 'lat'

      here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

                                      ^

boite:61: error: 'class TinyGPSPlus' has no member named 'latitude'

      here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

                                               ^

boite:61: error: 'class TinyGPSPlus' has no member named 'lon'

      here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

                                                                      ^

boite:61: error: 'class TinyGPSPlus' has no member named 'longitude'

      here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

                                                                               ^

boite:77: error: expected ')' before ';' token

      lcd.print (range;

                      ^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'void __vector_14()':

boite:105: error: 'class TinyGPSPlus' has no member named 'read'

    char c = GPS.read ();

                 ^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'float haversine(float, float, float, float)':

boite:176: error: 'rEarth' was not declared in this scope

   float d = 2.0 * rEarth * asin (sqrt(h)); 

                   ^

Plusieurs bibliothèque trouvées pour "TinyGPS++.h"
Utilisé : C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Utilisation de la bibliothèque LiquidCrystal version 1.0.5 dans le dossier: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal 
Utilisation de la bibliothèque TinyGPSPlus-0.94b prise dans le dossier : C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b (legacy)
Utilisation de la bibliothèque SoftwareSerial version 1.0 dans le dossier: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial 
Utilisation de la bibliothèque PWMServo version 2.1 dans le dossier: C:\Users\adrien\Desktop\arduino\libraries\PWMServo 
exit status 1
no matching function for call to 'TinyGPSPlus::TinyGPSPlus(SoftwareSerial*)'

la j’ai mis comme et encore une erreur

 #include <math.h>
 #include <LiquidCrystal.h>
 #include <TinyGPS++.h>
 #include <SoftwareSerial.h>
 SoftwareSerial mySerial (3, 2);
 TinyGPSPlus GPS (&mySerial);             
 #define GPSECHO false // faire vrai pour déboguer GPS
 boolean usingInterrupt = false;
 void useInterrupt(boolean);
 
 // Servo
 #include <PWMServo.h>
 PWMServo servoLatch;
 
 // Déclarations
 const float deg2rad = 0.01745329251994;
 float const Rearth = 6.371000,0;  // Peut remplacer avec 3958,75 mi, 6370,0 km, ou 3440,06 NM
 float  range = 3000;  // La distance d'ici à là
 String here;  // Lire à partir de GPS
 
 // Initialiser la bibliothèque avec les numéros des broches d'interface
 LiquidCrystal lcd (7, 8, 6, 10, 11, 12);
 
 int gpsWasFixed = HIGH;  // Ne les GPS ont une solution?
 int ledFix = 4;  // Broches pour LED fixe
 int servoPin = 9;  // Broches pour servo
 int Servolock = 110;  // Angle (deg) du servo "verrouillé"
 int servoUnlock = 0;  // Angle (deg) du servo "déverrouillé"
 
 String there = "N38 51,409, W077 01,328";  // Emplacement désiré va ici.  Assurez-vous que vous utilisez la même syntaxe et le nombre de caractères
 
 void setup()
 {
   servoLatch.attach (SERVO_PIN_A);
   servoLatch.write (Servolock);
   delay (50);
   lcd.begin (16, 2);
   Serial.begin (115200);
   Serial.println ( "Debug GPS Test:");
 
   GPS.begin (9600);
   GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude
   GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz
   useInterrupt (true);  // Lit les données de cuisson à la vapeur dans un fond
   delay(1000);
 
 
 }
 
 void loop () {
   // Parse GPS et recalculer RANGE
   if (GPS.newNMEAreceived ()) {
     if (! GPS.parse (GPS.lastNMEA ())) // définit aussi le drapeau newNMEAreceived () false
       return;  // Nous ne pouvons manquer d'analyser une phrase dans ce cas, nous devrions attendre une autre
   }
     if (GPS.fix) {
     gpsWasFixed = HIGH;
     digitalWrite(ledFix, HIGH);
 
 
     here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);
     range = haversine(string2lat(here), string2lon(here), string2lat(there), string2lon(there));
    Serial.print("Here: ");                                        //for GPS debug
    Serial.print(here);
    Serial.print("There: ");
    Serial.println(there);
    Serial.print("Range: ");
    Serial.print(range);
    Serial.println("m");
   
     lcd.clear ();
     lcd.setCursor (0,0);
     lcd.print ( "Distance jusqu'à LOYL");
     //lcd.setCursor(0,1);
     //lcd.print ( "");
     lcd.setCursor (0,1);
     lcd.print (range;
 
     delay(500);
   }
   else {                      // Pas de GPS FIX prendre boîte à l'extérieur
     lcd.clear ();
     lcd.setCursor (0,0);
     lcd.print ( "Bonjour Jenny!");
     lcd.setCursor (0,1);
     lcd.print ( "Prends-moi dehors!");
     delay(200);
   }
 
  if (range < 20.0){
    servoLatch.write(servoUnlock);
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Jenny: Will you ");
    lcd.setCursor(0,1);
    lcd.print("Marry Me?!");
    delay(5000);
   }
 }
 
 
 SIGNAL (TIMER0_COMPA_vect) {
   // Interrompre est appelé une fois par milliseconde, cherche de nouvelles données GPS, et le stocke
   char c = GPS.read ();
   if (GPSECHO)
     if (c) UDR0 = c; 
 }
 
 void useInterrupt(boolean v) {
  if (v) {
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
    usingInterrupt = true;
  } else {
    TIMSK0 &= ~_BV(OCIE0A);
    usingInterrupt = false;
  }
}
 
String int2fw (int x, int n) {
  // returns a string of length n (fixed-width)
  String s = (String) x;
  while (s.length() < n) {
    s = "0" + s;
  }
  return s;
}
 
String gps2string (String lat, float latitude, String lon, float longitude) {
  // returns "Ndd mm.mmm, Wddd mm.mmm";
  int dd = (int) latitude/100;
  int mm = (int) latitude % 100;
  int mmm = (int) round(1000 * (latitude - floor(latitude)));
  String gps2lat = lat + int2fw(dd, 2) + " " + int2fw(mm, 2) + "." + int2fw(mmm, 3);
  dd = (int) longitude/100;
  mm = (int) longitude % 100;
  mmm = (int) round(1000 * (longitude - floor(longitude)));
  String gps2lon = lon + int2fw(dd, 3) + " " + int2fw(mm, 2) + "." + int2fw(mmm, 3);
  String myString = gps2lat + ", " + gps2lon;
  return myString;
};
/*
float string2radius (String myString) {
  // returns a floating-point number: e.g. String myString = "Radius: 005.1 NM";
  float r = ((myString.charAt(8) - '0') * 100.0) + ((myString.charAt(9) - '0') * 10.0) + ((myString.charAt(10) - '0') * 1.0) + ((myString.charAt(12) - '0') * 0.10);
  return r;
};*/
 
float string2lat (String myString) {
  // returns radians: e.g. String myString = "N38 58.892, W076 29.177";
  float lat = ((myString.charAt(1) - '0') * 10.0) + (myString.charAt(2) - '0') * 1.0 + ((myString.charAt(4) - '0') / 6.0) + ((myString.charAt(5) - '0') / 60.0) + ((myString.charAt(7) - '0') / 600.0) + ((myString.charAt(8) - '0') / 6000.0) + ((myString.charAt(9) - '0') / 60000.0);
  //Serial.print("float lat: ");
  //Serial.println(lat);
  lat *= deg2rad;
  if (myString.charAt(0) == 'S')
    lat *= -1;                                                           // Correct for hemisphere
  return lat;
};
 
float string2lon (String myString) {
  // returns radians: e.g. String myString = "N38 58.892, W076 29.177";
  float lon = ((myString.charAt(13) - '0') * 100.0) + ((myString.charAt(14) - '0') * 10.0) + (myString.charAt(15) - '0') * 1.0 + ((myString.charAt(17) - '0') / 6.0) + ((myString.charAt(18) - '0') / 60.0) + ((myString.charAt(20) - '0') / 600.0) + ((myString.charAt(21) - '0') / 6000.0) + ((myString.charAt(22) - '0') / 60000.0);
  //Serial.print("float lon: ");
  //Serial.println(lon);
  lon *= deg2rad;
  if (myString.charAt(12) == 'W')
    lon *= -1;                                                           // Correct for hemisphere
  return lon;
};
 
 
float haversine (float lat1, float lon1, float lat2, float lon2) {
  // returns the great-circle distance between two points (radians) on a sphere
  float h = sq((sin((lat1 - lat2) / 2.0))) + (cos(lat1) * cos(lat2) * sq((sin((lon1 - lon2) / 2.0))));
  float d = 2.0 * rEarth * asin (sqrt(h));
  //Serial.println(d);
  return d;
 
};

adrien38:
c est pire :o

boite:7: error: no matching function for call to 'TinyGPSPlus::TinyGPSPlus(SoftwareSerial*)'

TinyGPSPlus GPS (&mySerial);

^

C:\Users\adrien\Desktop\arduino\boite\boite.ino:7:28: note: candidates are:

In file included from C:\Users\adrien\Desktop\arduino\boite\boite.ino:4:0:

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:217:3: note: TinyGPSPlus::TinyGPSPlus()

TinyGPSPlus();

^

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:217:3: note:  candidate expects 0 arguments, 1 provided

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note: constexpr TinyGPSPlus::TinyGPSPlus(const TinyGPSPlus&)

class TinyGPSPlus

^

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note:  no known conversion for argument 1 from 'SoftwareSerial*' to 'const TinyGPSPlus&'

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note: constexpr TinyGPSPlus::TinyGPSPlus(TinyGPSPlus&&)

C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b/TinyGPS++.h:214:7: note:  no known conversion for argument 1 from 'SoftwareSerial*' to 'TinyGPSPlus&&'

boite:18: error: expected unqualified-id before numeric constant

float const Rearth = 6.371000,0;  // Peut remplacer avec 3958,75 mi, 6370,0 km, ou 3440,06 NM

^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'void setup()':

boite:41: error: 'class TinyGPSPlus' has no member named 'begin'

GPS.begin (9600);

^

boite:42: error: 'class TinyGPSPlus' has no member named 'sendCommand'

GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude

^

boite:42: error: 'PMTK_SET_NMEA_OUTPUT_RMCGGA' was not declared in this scope

GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA);  // RMC (minimum recommandé) et GGA (données fixe) y compris l'altitude

^

boite:43: error: 'class TinyGPSPlus' has no member named 'sendCommand'

GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz

^

boite:43: error: 'PMTK_SET_NMEA_UPDATE_1HZ' was not declared in this scope

GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ);  // Taux de mise à jour 1 Hz

^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'void loop()':

boite:52: error: 'class TinyGPSPlus' has no member named 'newNMEAreceived'

if (GPS.newNMEAreceived ()) {

^

boite:53: error: 'class TinyGPSPlus' has no member named 'parse'

if (! GPS.parse (GPS.lastNMEA ())) // définit aussi le drapeau newNMEAreceived () false

^

boite:53: error: 'class TinyGPSPlus' has no member named 'lastNMEA'

if (! GPS.parse (GPS.lastNMEA ())) // définit aussi le drapeau newNMEAreceived () false

^

boite:56: error: 'class TinyGPSPlus' has no member named 'fix'

if (GPS.fix) {

^

boite:58: error: 'ledFix' was not declared in this scope

digitalWrite(ledFix, HIGH);

^

boite:61: error: 'class TinyGPSPlus' has no member named 'lat'

here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

^

boite:61: error: 'class TinyGPSPlus' has no member named 'latitude'

here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

^

boite:61: error: 'class TinyGPSPlus' has no member named 'lon'

here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

^

boite:61: error: 'class TinyGPSPlus' has no member named 'longitude'

here = gps2string ((String) GPS.lat, GPS.latitude, (String) GPS.lon, GPS.longitude);

^

boite:77: error: expected ')' before ';' token

lcd.print (range;

^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'void __vector_14()':

boite:105: error: 'class TinyGPSPlus' has no member named 'read'

char c = GPS.read ();

^

C:\Users\adrien\Desktop\arduino\boite\boite.ino: In function 'float haversine(float, float, float, float)':

boite:176: error: 'rEarth' was not declared in this scope

float d = 2.0 * rEarth * asin (sqrt(h));

^

Plusieurs bibliothèque trouvées pour "TinyGPS++.h"
Utilisé : C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Non utilisé : C:\Program Files (x86)\Arduino\libraries\TinyGPSPlus-0.94b
Utilisation de la bibliothèque LiquidCrystal version 1.0.5 dans le dossier: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
Utilisation de la bibliothèque TinyGPSPlus-0.94b prise dans le dossier : C:\Users\adrien\Desktop\arduino\libraries\TinyGPSPlus-0.94b (legacy)
Utilisation de la bibliothèque SoftwareSerial version 1.0 dans le dossier: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial
Utilisation de la bibliothèque PWMServo version 2.1 dans le dossier: C:\Users\adrien\Desktop\arduino\libraries\PWMServo
exit status 1
no matching function for call to 'TinyGPSPlus::TinyGPSPlus(SoftwareSerial*)'

Non c'est pas pire, c'est juste qu'en résolvant certains problèmes, d'autres qui n'étaient pas encore visibles apparaissent...

Le problème majeur de ce code c'est qu'il mélange les libs TinyGPS++ et SoftwareSerial, par exemple GPS.begin() n'existe pas pour TinyGPS.

Tu as écris le code tout seul ou à partir d'exemple?

Pour finir, la variable Rearth est mal déclarée, tu lui affectes une valeur avec un point et une virgule.

J'ai pas lu tout le code, mais tu cherches à faire quoi précisément?

je veux faire une boite qui s'ouvre seulement a une adresse gps précis

j'ai copier le code sur un site

jen ai besoin pour ma fete familial samedi si tu m'aide encore je devrai i arrivé

Voici un bout de code pour afficher sur un LCD ce que tu reçois avec ton antenne GPS, pense à croiser les fils RX et TX
Dans ce code la pin 2 correspond au RX coté arduino, à câbler donc avec le TX de l’antenne
la pin 3 au TX coté arduino, à câbler donc avec le RX de l’antenne.

Sers toi de ce code afin de repérer les coordonnées de ton lieu cible.

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

SoftwareSerial ss(2, 3);
LiquidCrystal lcd(4,5,6,7,8,9);
TinyGPSPlus gps;


void setup() 
{
    ss.begin(9600);
    lcd.begin(16,2);
    lcd.print("latxxxxxx");
    lcd.setCursor(12, 0);
    lcd.println("XXX");
    lcd.setCursor(0, 1);
    lcd.print("lonxxxxxx");
    lcd.setCursor(13, 1);
    lcd.print("kmh");
    delay(2000);
    lcd.clear();
    delay(100);
    lcd.println("wait 30 sec");
    delay(30000);
    lcd.clear();  

}

void loop() 
{
  while (ss.available())
    if (gps.encode(ss.read()))
      {displayInfo();}
}

void displayInfo()
{
lcd.setCursor(0, 0);
lcd.print(gps.location.lat(), 6);
lcd.setCursor(13, 0);
lcd.print(gps.cardinal(gps.course.deg()));
lcd.setCursor(0, 1);
lcd.print(gps.location.lng(), 6);
lcd.setCursor(12, 1);
lcd.print(gps.speed.kmph());

//lcd.clear();
}

Ensuite, je te conseillerai bien d’utiliser la fonction

gps.distanceBetween(lat1, long1, lat2, long2);

et de tester “si la distance est inférieure à x mêtre” alors “ouvrir le servo”

tu pourrai pas me faire le code en entier s'il te plais car la je suis perdu

en détail

un message dit s'en bonjour des que on l'allume

et apres la distance du points gps qui activera le servomoteur pour débloque la boite

mon servomoteur et sur la pin 9

donc avec deux angle une de verrouillage et un pour l'ouverture

et un message qui dit ouvre moi

pour mois l''afficheur

et comme sa

LiquidCrystal lcd(7,8,6,10,11,12);

j ai pas de led juste celle de afficheur et pas de le truc pour regler le contraste

sa serais super gentils de votre part

il ya quelle q'un pour m'aidé

C'est pas nécessaire de m'envoyer un mp pour me proposer de l'argent...

Tu as quoi comme base en programmation? Ou est ce que tu bloque?

Pas de basse juste suivi des tuto mes pour mon gps j'en trouve pas et la copilation de l'écran avec le gps plus le servo ces compliqué pour sa que je tes demander de l'aide mes la ces dure de compiler pour moi

Un petit quelque chose, pas testé chez moi.

A toi de changer les valeurs de:

  • const double LatCible = 48.85826;

  • const double LongCible = 2.294516;

C’est les coordonnées GPS de la tour eiffel… à toi de prendre le code donné avant avec les bons pins pour l’écran et de faire un relevé de ta cible

J’ai mis une tempo de 25 secondes au démarrage de l’arduino qui te laisse le temps de mettre ce que tu as besoin dans la boîte avant que le servo ne se referme.

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

SoftwareSerial ss(2, 3); // RX pin arduino 2  à brancher sur  pin TX du GPS 
// TX pin arduino 3 à brancher sur RX du GPS
LiquidCrystal lcd(7,8,6,10,11,12);
TinyGPSPlus gps;
Servo ServoVerrou;

const double LatCible = 48.85826;
const double LongCible = 2.294516;

const int PositionFermee = 0;
const int PositionOuverte = 180;

double Lat, Long, Distance;

void setup() 
{
  lcd.begin(16,2); //initialisation du lcd 16x2
  ss.begin(9600);
  ServoVerrou.attach(9);
  ServoVerrou.write(PositionOuverte);
  lcd.print("OUVERT");
  delay(25000);
  lcd.print("FERMETURE");
  delay(2000);
  ServoVerrou.write(PositionFermee);
  lcd.clear();

}

void loop() 
{
  lcd.clear();
  ServoVerrou.write(PositionFermee);  
    while (ss.available())
    {
      if (gps.encode(ss.read()))
      {
      Lat = gps.location.lat();
      Long = gps.location.lng();     
      Distance = gps.distanceBetween(Lat, Long, LatCible, LongCible);
      lcd.print("Distance =");
      lcd.setCursor(0, 1);
      lcd.print(Distance); 
      lcd.setCursor(12,1);
      lcd.print("m");   
          if (Distance < 1)
          {
          //lcd.clear;
          lcd.print("ARRIVEE");
          ServoVerrou.write(PositionOuverte);
          }
          
      
      }
      else
      {
      lcd.print("No GPS fix");
      }
           
      }
  lcd.print("No GPS Data");
}

super merci juste no gps fix tu ses pk ?

C'est si le GPS ne trouve pas de satellites

la

no gps data

et no gps fix

jeux peut essayer quoi a ton avis

tu es dehors? ou en intérieur?