IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Programme arduino nano


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut Programme arduino nano
    bonjour, je recherche une personne susceptible de me retablir un probleme sur un sketch arduino je ne suis pas asser qualifié pour ce boulot car je debute merci de votre aide

  2. #2
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 783
    Par défaut
    Hello,

    Pour faire avancer le schmilblick, décris le problème.

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut arduino
    Merci pour votre aide je suis radioamateur et le programme sur arduino nano me transcrit sur écran 4X20 lcd la latitude, la longitude, l'altitude, le locator, la date et l'heure TU le nombres de sat recu.Et le mot long pour longitude ne s’écrit pas correctement et change en permanence .je peux vous envoyer une petite video mais je ne sais pas ou la mettre.
    Le montage est constitué d'un nano d'un lcd et d'un module gps ubloc neo6m.
    Merci de votre aide

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 193
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    Tu peux montrer le programme Arduino en le postant ici ?

  5. #5
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut
    voila le prog
    Code : 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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    #include <SoftwareSerial.h>
    #include <TinyGPSPlus.h>
     
    /*******************************************
     * A0, A1, A2 Afficheur LCD I2C à la masse *
     * Mettre un pont de soudure sur les plots *
     * *****************************************
    */
    //Pour PCF8574A
    //LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 4, 5, 6, 7, 3,POSITIVE);
     
    //Pour PCF8574
    LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3,POSITIVE);
     
    #define InRX 4   
    #define OutTX 3   
    #define VitGPS 9600
    #define VitSerie 115200
     
    SoftwareSerial gpsSerial(InRX, OutTX);
    TinyGPSPlus gps;
     
    void getgps(TinyGPSPlus &gps);
     
    char locator[6];
     
    //////////////////////////
    // Ensemble de routines //
    //////////////////////////
    /*
    *************************
    * Calcul du QRA locator *
    * écrit par F****       *
    *************************
    */
    void CalculLocator(char *dst, float lat, float lng ) {
      int lo1, lo2, lo3;
      int la1, la2, la3;
      float reste;
      // longitude
      reste = lng + 180.0;
      lo1 = int(reste / 20.0);
      reste = reste - float(lo1) * 20.0;
      lo2 = int(reste / 2.0);
      reste = reste - 2.0 * float(lo2);
      lo3 = int(12.0 * reste);
      // latitude
      reste = lat + 90.0;
      la1 = int(reste / 10.0);
      reste = reste - float(la1) * 10.0;
      la2 = int(reste);
      reste = reste - float(la2);
      la3 = int(24.0 * reste);
     
      dst[0] = (char)lo1 + 65;
      dst[1] = (char)la1 + 65;
      dst[2] = (char)lo2 + 48;
      dst[3] = (char)la2 + 48;
      dst[4] = (char)lo3 + 65;
      dst[5] = (char)la3 + 65;
      dst[6] = (char)0; 
    }
    /*
    *************************
    * Transfert datas GPS   *
    * et affichage sur LCD  *
    *************************
    */
    void getgps(TinyGPSPlus &gps)
    {
      lcd.setCursor(0, 0);
      lcd.print("Lat "); 
      lcd.print(gps.location.lat(),7); 
      if (gps.location.lat() < 0)
        {
          lcd.print(" S");
        }
        else
        {
          lcd.print(" N");
        }
     
      lcd.setCursor(0, 1);
      lcd.print("long "); 
      lcd.print(gps.location.lng(),7); 
      if (gps.location.lng() < 0)
        {
          lcd.print(" O");
        }
        else
        {
          lcd.print(" E");
        }
     
      lcd.setCursor(0, 2);
      lcd.print("Alt "); 
      lcd.print(gps.altitude.meters(),0); 
      lcd.print("m");
     
      CalculLocator(locator, gps.location.lat(), gps.location.lng());
      lcd.setCursor(13, 2);
      lcd.print(locator);
     
      lcd.setCursor(1,3);
      if (gps.date.day() < 10)
        lcd.print("0");
      lcd.print(gps.date.day());
      lcd.print("/");
      if (gps.date.month() < 10)
        lcd.print("0");
      lcd.print(gps.date.month());
      lcd.print("/");
      lcd.print(gps.date.year());
     
      lcd.setCursor(12,3);
      if (gps.time.hour() < 10)
        lcd.print("0");
      lcd.print(gps.time.hour()); 
      lcd.print(":");
      if (gps.time.minute() < 10)
        lcd.print("0");
      lcd.print(gps.time.minute()); 
      lcd.print(":"); 
      if (gps.time.second() < 10)
        lcd.print("0");
      lcd.print(gps.time.second());
     
      lcd.setCursor(18,0);
      if (gps.satellites.value() < 10)
        lcd.print("0");
      lcd.print(gps.satellites.value());
    }
    /*
    *************************
    * Lecture des datas GPS *
    * toutes les secondes   *
    *************************
    */
    static void DelaiGPS(unsigned long ms)
    {
      unsigned long start = millis();
      do
      {
        while (gpsSerial.available())
          gps.encode(gpsSerial.read());
      } while (millis() - start < ms);
    }
    /*
    ****************************
    * Initialisation matériels *
    * et programme (une fois)  *
    ****************************
    */
    void setup()
    {
      gpsSerial.begin(VitGPS); 
    //Serial.begin(VitSerie); // Utilisé pour le déboguage moniteur USB
     
      lcd.begin(20, 4);
      lcd.setCursor(0, 0);
      lcd.print("GPSDO 10MHz  (*****)");
      lcd.setCursor(0, 1);
      lcd.print("Arduino nano+Ublox 5");
      lcd.setCursor(0, 3);
      lcd.print("** F1*** 01/2017 ** ");
      delay(3000);
      lcd.clear();
    }
    /*
    *************************
    * Programme principal   *
    * qui boucle sans fin   *
    *************************
    */
    void loop()
    {
      DelaiGPS(1000); 
      getgps(gps) ;
    }

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 193
    Billets dans le blog
    47
    Par défaut
    Citation Envoyé par ZBOOGY Voir le message
    Et le mot long pour longitude ne s’écrit pas correctement et change en permanence .je peux vous envoyer une petite video mais je ne sais pas ou la mettre.
    Tu pourrais être plus précis ? Tu peux joindre une image éventuellement (bouton [insérer une image]).

  7. #7
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Citation Envoyé par ZBOOGY Voir le message
    le mot long pour longitude ne s’écrit pas correctement et change en permanence

    le code fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      lcd.setCursor(0, 1);
      lcd.print("long ");
    donc le mot "long " devrait s'afficher sur la deuxième ligne (avec un raffichage toutes les secondes parce que le code n'est pas super bien fait)

  8. #8
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut
    Merci de votre réponse mais en gros que dois je changer pour ne plus avoir cette anomalie.
    De plus je voudrais mettre une petite video du probleme mais je n'y arrive pas

  9. #9
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    pouvez vous décrire plus précisément le souci?

    pouvez vous poster une photo du montage? avez vous exactement le matériel requis?

  10. #10
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    ah je viens de voir qu'il y avait un bug important dans le code
    il faut changer
    en
    vous avez un débordement mémoire sinon qui peut mettre le bazar parce que 7 valeurs sont écrites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      dst[0] = (char)lo1 + 65;
      dst[1] = (char)la1 + 65;
      dst[2] = (char)lo2 + 48;
      dst[3] = (char)la2 + 48;
      dst[4] = (char)lo3 + 65;
      dst[5] = (char)la3 + 65;
      dst[6] = (char)0;

  11. #11
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Attachez un zip ou postez la vidéo sur YouTube et mettez le lien ici
    Je ne réponds pas aux MP

  12. #12
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    étant donné que vous n'utilisez pas le port série pour faire du débug, vous pourriez envisager de connecter le GPS sur les pins 0 et 1 (une fois le code chargé) et utiliser Serial au lieu de l'émulation logicielle SoftwareSerial. ce serait plus robuste.

    un truc comme cela (non vérifié - tapé en fonction de votre code)

    Code : 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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <TinyGPSPlus.h>
     
    LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
     
    #define gpsSerial Serial // le GPS est connecté sur les pins 0 et 1 (sinon remettre SoftwareSerial)
    TinyGPSPlus gps;
     
    // calcul du QRA locator
    void calculLocator(char *dst, float lat, float lng ) {
      int lo1, lo2, lo3;
      int la1, la2, la3;
      float reste;
      // longitude
      reste = lng + 180.0;
      lo1 = int(reste / 20.0);
      reste = reste - float(lo1) * 20.0;
      lo2 = int(reste / 2.0);
      reste = reste - 2.0 * float(lo2);
      lo3 = int(12.0 * reste);
      // latitude
      reste = lat + 90.0;
      la1 = int(reste / 10.0);
      reste = reste - float(la1) * 10.0;
      la2 = int(reste);
      reste = reste - float(la2);
      la3 = int(24.0 * reste);
     
      dst[0] = (char)lo1 + 'A';
      dst[1] = (char)la1 + 'A';
      dst[2] = (char)lo2 + '0';
      dst[3] = (char)la2 + '0';
      dst[4] = (char)lo3 + 'A';
      dst[5] = (char)la3 + 'A';
      dst[6] = '\0'; // fin de chaîne
    }
     
    void affichage() {
      char buffer[15];
     
      if (gps.location.isValid()) {
        // on affiche la latitude
        dtostrf(gps.location.lat(), 9, 7, buffer);
        strlcat(buffer, (gps.location.lat() < 0) ? " S" : " N", sizeof buffer);
        lcd.setCursor(6, 0); lcd.print("              "); // on efface l'ancienne valeur
        lcd.setCursor(6, 0); lcd.print(buffer);           // on affiche la nouvelle valeur
     
        // on affiche la longitude
        dtostrf(gps.location.lng(), 9, 7, buffer);
        strlcat(buffer, (gps.location.lng() < 0) ? " O" : " E", sizeof buffer);
        lcd.setCursor(6, 1); lcd.print("              "); // on efface l'ancienne valeur
        lcd.setCursor(6, 1); lcd.print(buffer);           // on affiche la nouvelle valeur
     
        // on affiche le QRA
        calculLocator(buffer, gps.location.lat(), gps.location.lng()); // toujours 6 caractères
        lcd.setCursor(14, 2);
        lcd.print(buffer);
     
        // On affiche le nombre de satellites
        lcd.setCursor(18, 0);
        if (gps.satellites.value() < 10) lcd.write('0');
        lcd.print(gps.satellites.value());
      } else {
        lcd.setCursor(6, 0); lcd.print("---         --"); // on efface l'ancienne valeur
        lcd.setCursor(6, 1); lcd.print("---           "); // on efface l'ancienne valeur
        lcd.setCursor(14, 2); lcd.print("------");        // on efface l'ancienne valeur
      }
     
      // on affiche l'altitude
      lcd.setCursor(6, 2);
      if (gps.altitude.isValid()) {
        snprintf(buffer, sizeof buffer, "% 4dm", (int) gps.altitude.meters());
        lcd.print(buffer); // la taille est constante sur 4 chiffres + m, cadré à droite (caractères index 6 à 10 sur l'écran)
      } else {
        lcd.print("----m");
      }
     
      // on affiche la date
      lcd.setCursor(0, 3);
      if (gps.date.isValid())  {
        if (gps.date.day() < 10) lcd.write('0');
        lcd.print(gps.date.day());
        lcd.write('/');
        if (gps.date.month() < 10)lcd.write('0');
        lcd.print(gps.date.month());
        lcd.write('/');
        lcd.print(gps.date.year());
      } else {
        lcd.print("--/--/----");
      }
     
      // on affiche l'heure
      lcd.setCursor(12, 3);
      if (gps.time.isValid())  {
        if (gps.time.hour() < 10) lcd.write('0');
        lcd.print(gps.time.hour());
        lcd.write(':');
        if (gps.time.minute() < 10) lcd.write('0');
        lcd.print(gps.time.minute());
        lcd.write(':');
        if (gps.time.second() < 10) lcd.write('0');
        lcd.print(gps.time.second());
      } else {
        lcd.print("--:--:--");
      }
    }
     
    void setup() {
      gpsSerial.begin(9600);
      lcd.begin(20, 4);
      // structure de l'écran
      lcd.setCursor(0, 0); lcd.print("Lat : ---         --"); // lat + nombre de satellites
      lcd.setCursor(0, 1); lcd.print("Long: ---           ");  // long
      lcd.setCursor(0, 2); lcd.print("Alt : ----m   ------");  // altitude + QRA
      lcd.setCursor(0, 3); lcd.print("--/--/----  --:--:--");  // date et heure
    }
     
    void loop() {
      if (gpsSerial.available()) {
        if (gps.encode(gpsSerial.read())) affichage();
      }
    }
    ce code devrait mettre à jour l'écran à chaque fois que le GPS a fourni une phrase correcte.

  13. #13
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut
    je vais tester je suis arrivé a mettre sur youtube la video je met le lien pour que vous puissiez voir ce qui ce passe mercia vous

  14. #14
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut suite message
    pouvez vous sur votre dernier message me faire a main levé le petit schéma de branchement car je ne suis pas doué merci

  15. #15
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Rien de particulier au Niveau du câblage - au lieu d'utiliser les pins de sofwtare serial vous utiliser le port materiel : Le Tx du GPS connecté au Rx (pin 0) et le Rx du GPS connecté au Tx (pin 1) avec l'adaptation de tension suivant votre module (on dirait qu'il n'y en a pas sur votre video).


    La vidéo c'est mon code ou le votre ?

    Le début de la deuxième ligne peut être perturbé si vous écrivez après la fin de la 3ème ligne ce qui correspondrait au locator qui ne serait pas bien construit ou au débordement mémoire dont on parlait. Si vous enlevez l'affichage du locator, voyez vous toujours le clignotement?

  16. #16
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut gps arduino
    Bonjour d'abord un grand merci il y a une avancé spectaculaire apres avoir reussi a mettre le code dans le nano cela fonctionne avec votre code le RX gps au TX1 et le TX gps au RXO du nano une seule chose ne fonctionne pas c'est l'altitude si je peux abuser de votre gentillesse est il difficile de mettre a l'alumage du gps unr presentation comme
    GPS THIERRY
    LOC / ALT / SAT
    FONTENAY en PARISIS
    73 QRO
    et ensuite afficher la lat long alt etc
    Merci encore à vous car je n'y serais pas arrivé

  17. #17
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 783
    Par défaut
    Hello,

    Non, c'est assez simple. Il suffit de mettre après le lcd.begin(20, 4) dans la fonction setup(), ces quelque lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    lcd.setCursor(0, 0);
    lcd.print("GPS THIERRY")
    lcd.setCursor(0, 1);
    lcd.print("LOC / ALT / SAT");
    lcd.setCursor(0, 2);
    lcd.printf("FONTENAY en PARISIS");
    lcd.setCursor(0, 3);
    lcd.printf("73 QRO");
    delay(un nombre de seconde);
    lcd.clear();
    Attention à ne pas mettre plus de 20 caractères.

  18. #18
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2024
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2024
    Messages : 11
    Par défaut arduino suite
    J'ai remis le code car cela ne marche pas il m'affiche des choses en rouge
    voila ce que ca me dit
    C:\Users\f5pls\Documents\Arduino\GPSDO\gpsF5PLS2\gpsF5PLS2.ino:119:5: error: 'class LiquidCrystal_I2C' has no member named 'printf'; did you mean 'print'?
    lcd.printf("73 QRO");
    ^~~~~~
    print
    Plusieurs bibliothèque trouvées pour "Wire.h"
    Utilisé: C:\Users\f5pls\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire
    Non utilisé: C:\Users\f5pls\Documents\Arduino\libraries\Wire
    Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Users\f5pls\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire
    Utilisation de la bibliothèque LiquidCrystalI2C prise dans le dossier: C:\Users\f5pls\Documents\Arduino\libraries\LiquidCrystalI2C (héritage)
    Utilisation de la bibliothèque TinyGPSPlus version 1.0.3 dans le dossier: C:\Users\f5pls\Documents\Arduino\libraries\TinyGPSPlus
    exit status 1

    Compilation error: expected ';' before 'lcd'

    Code : 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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <TinyGPSPlus.h>
     
    LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
     
    #define gpsSerial Serial // le GPS est connecté sur les pins 0 et 1 (sinon remettre SoftwareSerial)
    TinyGPSPlus gps;
     
    // calcul du QRA locator
    void calculLocator(char *dst, float lat, float lng ) {
      int lo1, lo2, lo3;
      int la1, la2, la3;
      float reste;
      // longitude
      reste = lng + 180.0;
      lo1 = int(reste / 20.0);
      reste = reste - float(lo1) * 20.0;
      lo2 = int(reste / 2.0);
      reste = reste - 2.0 * float(lo2);
      lo3 = int(12.0 * reste);
      // latitude
      reste = lat + 90.0;
      la1 = int(reste / 10.0);
      reste = reste - float(la1) * 10.0;
      la2 = int(reste);
      reste = reste - float(la2);
      la3 = int(24.0 * reste);
     
      dst[0] = (char)lo1 + 'A';
      dst[1] = (char)la1 + 'A';
      dst[2] = (char)lo2 + '0';
      dst[3] = (char)la2 + '0';
      dst[4] = (char)lo3 + 'A';
      dst[5] = (char)la3 + 'A';
      dst[6] = '\0'; // fin de chaîne
    }
     
    void affichage() {
      char buffer[15];
     
      if (gps.location.isValid()) {
        // on affiche la latitude
        dtostrf(gps.location.lat(), 9, 7, buffer);
        strlcat(buffer, (gps.location.lat() < 0) ? " S" : " N", sizeof buffer);
        lcd.setCursor(6, 0); lcd.print("              "); // on efface l'ancienne valeur
        lcd.setCursor(6, 0); lcd.print(buffer);           // on affiche la nouvelle valeur
     
        // on affiche la longitude
        dtostrf(gps.location.lng(), 9, 7, buffer);
        strlcat(buffer, (gps.location.lng() < 0) ? " O" : " E", sizeof buffer);
        lcd.setCursor(6, 1); lcd.print("              "); // on efface l'ancienne valeur
        lcd.setCursor(6, 1); lcd.print(buffer);           // on affiche la nouvelle valeur
     
        // on affiche le QRA
        calculLocator(buffer, gps.location.lat(), gps.location.lng()); // toujours 6 caractères
        lcd.setCursor(14, 2);
        lcd.print(buffer);
     
        // On affiche le nombre de satellites
        lcd.setCursor(18, 0);
        if (gps.satellites.value() < 10) lcd.write('0');
        lcd.print(gps.satellites.value());
      } else {
        lcd.setCursor(6, 0); lcd.print("---         --"); // on efface l'ancienne valeur
        lcd.setCursor(6, 1); lcd.print("---           "); // on efface l'ancienne valeur
        lcd.setCursor(14, 2); lcd.print("------");        // on efface l'ancienne valeur
      }
     
      // on affiche l'altitude
      lcd.setCursor(6, 2);
      if (gps.altitude.isValid()) {
        snprintf(buffer, sizeof buffer, "% 4dm", (int) gps.altitude.meters());
        lcd.print(buffer); // la taille est constante sur 4 chiffres + m, cadré à droite (caractères index 6 à 10 sur l'écran)
      } else {
        lcd.print("----m");
      }
     
      // on affiche la date
      lcd.setCursor(0, 3);
      if (gps.date.isValid())  {
        if (gps.date.day() < 10) lcd.write('0');
        lcd.print(gps.date.day());
        lcd.write('/');
        if (gps.date.month() < 10)lcd.write('0');
        lcd.print(gps.date.month());
        lcd.write('/');
        lcd.print(gps.date.year());
      } else {
        lcd.print("--/--/----");
      }
     
      // on affiche l'heure
      lcd.setCursor(12, 3);
      if (gps.time.isValid())  {
        if (gps.time.hour() < 10) lcd.write('0');
        lcd.print(gps.time.hour());
        lcd.write(':');
        if (gps.time.minute() < 10) lcd.write('0');
        lcd.print(gps.time.minute());
        lcd.write(':');
        if (gps.time.second() < 10) lcd.write('0');
        lcd.print(gps.time.second());
      } else {
        lcd.print("--:--:--");
      }
    }
     
    void setup() {
    gpsSerial.begin(9600);
    lcd.begin(20, 4);
    //lcd.setCursor(0, 0);
    //lcd.print("GPS THIERRY")
    //lcd.setCursor(0, 1);
    //lcd.print("LOC / ALT / SAT");
    //lcd.setCursor(0, 2);
    //lcd.printf("FONTENAY en PARISIS");
    //lcd.setCursor(0, 3);
    //lcd.printf("73 QRO");
    //delay(2000);
    //lcd.clear(); 
      // structure de l'écran
      lcd.setCursor(0, 0); lcd.print("Lat : ---         --"); // lat + nombre de satellites
      lcd.setCursor(0, 1); lcd.print("Long: ---           ");  // long
      lcd.setCursor(0, 2); lcd.print("Alt : ----m   ------");  // altitude + QRA
      lcd.setCursor(0, 3); lcd.print("--/--/----  --:--:--");  // date et heure
    }
     
    void loop() {
      if (gpsSerial.available()) {
        if (gps.encode(gpsSerial.read())) affichage();
      }
    }
    et pour laltitude merci encore

  19. #19
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 783
    Par défaut
    Désolé, c'est ma faute. Je suis un programmeur C, et en C une des fonctions pour afficher est la fonction printf() (pour print formatted) ! Je tape automatiquement le f après print (depuis le temps que je code en C !). Il suffit de l'enlever aux lignes 6 et 8.
    Et j'ai oublié le ; final ligne 2.

    Encore sorry.

  20. #20
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Citation Envoyé par ZBOOGY Voir le message
    une seule chose ne fonctionne pas c'est l'altitude si je peux abuser de votre gentillesse est il difficile de mettre a l'alumage du gps unr presentation...
    donc le code avec écran d'accueil serait
    Code : 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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <TinyGPSPlus.h>
     
    LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
     
    #define gpsSerial Serial // le GPS est connecté sur les pins 0 et 1 (sinon remettre SoftwareSerial)
    TinyGPSPlus gps;
     
    // calcul du QRA locator
    void calculLocator(char *dst, float lat, float lng ) {
      int lo1, lo2, lo3;
      int la1, la2, la3;
      float reste;
      // longitude
      reste = lng + 180.0;
      lo1 = int(reste / 20.0);
      reste = reste - float(lo1) * 20.0;
      lo2 = int(reste / 2.0);
      reste = reste - 2.0 * float(lo2);
      lo3 = int(12.0 * reste);
      // latitude
      reste = lat + 90.0;
      la1 = int(reste / 10.0);
      reste = reste - float(la1) * 10.0;
      la2 = int(reste);
      reste = reste - float(la2);
      la3 = int(24.0 * reste);
     
      dst[0] = (char)lo1 + 'A';
      dst[1] = (char)la1 + 'A';
      dst[2] = (char)lo2 + '0';
      dst[3] = (char)la2 + '0';
      dst[4] = (char)lo3 + 'A';
      dst[5] = (char)la3 + 'A';
      dst[6] = '\0'; // fin de chaîne
    }
     
    void affichage() {
      char buffer[15];
     
      if (gps.location.isValid()) {
        // on affiche la latitude
        dtostrf(gps.location.lat(), 9, 7, buffer);
        strlcat(buffer, (gps.location.lat() < 0) ? " S" : " N", sizeof buffer);
        lcd.setCursor(6, 0); lcd.print("              "); // on efface l'ancienne valeur
        lcd.setCursor(6, 0); lcd.print(buffer);           // on affiche la nouvelle valeur
     
        // on affiche la longitude
        dtostrf(gps.location.lng(), 9, 7, buffer);
        strlcat(buffer, (gps.location.lng() < 0) ? " O" : " E", sizeof buffer);
        lcd.setCursor(6, 1); lcd.print("              "); // on efface l'ancienne valeur
        lcd.setCursor(6, 1); lcd.print(buffer);           // on affiche la nouvelle valeur
     
        // on affiche le QRA
        calculLocator(buffer, gps.location.lat(), gps.location.lng()); // toujours 6 caractères
        lcd.setCursor(14, 2);
        lcd.print(buffer);
     
        // On affiche le nombre de satellites
        lcd.setCursor(18, 0);
        if (gps.satellites.value() < 10) lcd.write('0');
        lcd.print(gps.satellites.value());
      } else {
        lcd.setCursor(6, 0); lcd.print("---         --"); // on efface l'ancienne valeur
        lcd.setCursor(6, 1); lcd.print("---           "); // on efface l'ancienne valeur
        lcd.setCursor(14, 2); lcd.print("------");        // on efface l'ancienne valeur
      }
     
      // on affiche l'altitude
      lcd.setCursor(6, 2);
      if (gps.altitude.isValid()) {
        snprintf(buffer, sizeof buffer, "% 4dm", (int) gps.altitude.meters());
        lcd.print(buffer); // la taille est constante sur 4 chiffres + m, cadré à droite (caractères index 6 à 10 sur l'écran)
      } else {
        lcd.print("----m");
      }
     
      // on affiche la date
      lcd.setCursor(0, 3);
      if (gps.date.isValid())  {
        if (gps.date.day() < 10) lcd.write('0');
        lcd.print(gps.date.day());
        lcd.write('/');
        if (gps.date.month() < 10)lcd.write('0');
        lcd.print(gps.date.month());
        lcd.write('/');
        lcd.print(gps.date.year());
      } else {
        lcd.print("--/--/----");
      }
     
      // on affiche l'heure
      lcd.setCursor(12, 3);
      if (gps.time.isValid())  {
        if (gps.time.hour() < 10) lcd.write('0');
        lcd.print(gps.time.hour());
        lcd.write(':');
        if (gps.time.minute() < 10) lcd.write('0');
        lcd.print(gps.time.minute());
        lcd.write(':');
        if (gps.time.second() < 10) lcd.write('0');
        lcd.print(gps.time.second());
      } else {
        lcd.print("--:--:--");
      }
    }
     
    void setup() {
      gpsSerial.begin(9600);
      lcd.begin(20, 4);
      // affichage de l'écran d'accueil
      lcd.clear();
      lcd.print(" -- GPS  THIERRY --")
      lcd.setCursor(0, 1);
      lcd.print("  LOC / ALT / SAT");
      lcd.setCursor(0, 2);
      lcd.print(" FONTENAY en PARISIS");
      lcd.setCursor(0, 3);
      lcd.print("QRA : 73 QRO");
      delay(2000);
     
      // structure de l'écran
      lcd.clear();
      lcd.setCursor(0, 0); lcd.print("Lat : ---         --"); // lat + nombre de satellites
      lcd.setCursor(0, 1); lcd.print("Long: ---           ");  // long
      lcd.setCursor(0, 2); lcd.print("Alt : ----m   ------");  // altitude + QRA
      lcd.setCursor(0, 3); lcd.print("--/--/----  --:--:--");  // date et heure
    }
     
    void loop() {
      if (gpsSerial.available()) {
        if (gps.encode(gpsSerial.read())) affichage();
      }
    }
    si l'altitude ne se met pas à jour c'est que le test qui vérifie si on a obtenu une altitude du GPS n'est pas validé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      // on affiche l'altitude
      lcd.setCursor(6, 2);
      if (gps.altitude.isValid()) {
        snprintf(buffer, sizeof buffer, "% 4dm", (int) gps.altitude.meters());
        lcd.print(buffer); // la taille est constante sur 4 chiffres + m, cadré à droite (caractères index 6 à 10 sur l'écran)
      } else {
        lcd.print("----m");
      }
    savez vous si votre GPS donne les trames NMEA comportant l'altitude? (dans la trame $GPGGA généralement)

Discussions similaires

  1. Réponses: 10
    Dernier message: 18/11/2022, 11h51
  2. Programmation Ipod Nano
    Par fred998 dans le forum Swift
    Réponses: 0
    Dernier message: 31/12/2015, 17h04
  3. Programmation Arduino + capteurs de flexion
    Par kakthus dans le forum Arduino
    Réponses: 1
    Dernier message: 21/10/2015, 12h45
  4. programmer arduino avec simulink
    Par youssefhoky dans le forum Simulink
    Réponses: 0
    Dernier message: 01/04/2015, 20h38
  5. De l'aide pour programmation Arduino
    Par Arthurie dans le forum Arduino
    Réponses: 3
    Dernier message: 01/07/2014, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo