Problème inclusion librairie arduino

Problème inclusion librairie arduino - C++ - Programmation

Marsh Posté le 26-04-2019 à 21:32:55    

Bonjour à tous,
Je suis actuellement en train de réaliser un programme qui permet le verrouillage d'une borne via électroaimant. Tout ce passe très bien pour le moment, j'ai réussi à créer la connexion par bluetooth à l'aide du module HC-05 et je me tourne maintenant sur la partie nfc, où il suffira de poser son téléphone pour vérouiller/déverrouiller la borne.
Pour ce faire j'ai acheté un module nfc st microelctronics X-NUCLEO-NFC01A1 et je suis en train d'inclure les librairies correspondantes.
J'ai installé les librairies du module et les librairie de la puce M24SR, mais lorsque j'écris #include<M24SR.h>, j'obtiens une erreur de compilation que voici:

Code :
  1. In file included from E:\Mes documents\Arduino\libraries\STM32duino_M24SR64-Y\src/NDefNfcTag.h:42:0,
  2.                  from E:\Mes documents\Arduino\libraries\STM32duino_M24SR64-Y\src/M24SR.h:58,
  3.                  from E:\Mes documents\arduino_picto\arduino_picto.ino:3:
  4. E:\Mes documents\Arduino\libraries\STM32duino_M24SR64-Y\src/Message.h:41:21: fatal error: algorithm: No such file or directory
  5. compilation terminated.
  6. exit status 1
  7. Erreur de compilation pour la carte Arduino/Genuino Uno


Je ne sais pas comment le régler le problème, car j'ai épluché les sites mais il y a très peu d'info concernant ce module nfc, c'est pourquoi je me tourne vers vous dans l'espoir que quelqu'un ai la solution au problème.  
Voici mon programme complet, en cas de besoin.

Code :
  1. #include <Wire.h>
  2. #include <M24SR.h>
  3. #define SerialPort      Serial
  4. #define I2C2_SCL        D15
  5. #define I2C2_SDA        D14
  6. #define M24SR_ADDR      0xAC
  7. #define GPO_PIN         D12
  8. #define RF_DISABLE_PIN  D11
  9. #define X_NUCLEO_NFC01A1_LED1_PIN D5
  10. #define X_NUCLEO_NFC01A1_LED2_PIN D4
  11. #define X_NUCLEO_NFC01A1_LED3_PIN D2
  12. TwoWire dev_i2c(I2C2_SDA, I2C2_SCL);
  13. M24SR nfcTag(M24SR_ADDR, &dev_i2c, NULL, GPO_PIN, RF_DISABLE_PIN);
  14. String inputString = "";
  15. String command = "";
  16. String value = "";
  17. String password = "picto";
  18. boolean stringComplete = false;
  19. const int myelectro = 7;
  20. void setup()
  21. {
  22.   Serial.begin(9600);
  23.   pinMode(myelectro,OUTPUT);
  24.   inputString.reserve(50); 
  25.   command.reserve(50);
  26.   value.reserve(50);
  27.   boolean stringOK = false;
  28.   digitalWrite(myelectro, HIGH);
  29. }
  30. void loop()
  31. {
  32.   if (stringComplete) {
  33.    
  34.     delay(100);
  35.  
  36.     int pos = inputString.indexOf('=');
  37.  
  38.     if (pos > -1) {
  39.    
  40.       command = inputString.substring(0, pos);
  41.      
  42.       value = inputString.substring(pos + 1, inputString.length() - 1);
  43.  
  44.       if (!password.compareTo(value) && (command == "OPEN" )) {
  45.      
  46.         openDoor();
  47.         Serial.println(" OPEN" );
  48.         delay(100);
  49.       }
  50.       else if (!password.compareTo(value) && (command == "CLOSE" )) {
  51.      
  52.         closeDoor();
  53.         Serial.println(" CLOSE" );
  54.         delay(100);
  55.       }
  56.       else if (password.compareTo(value)) {
  57.      
  58.         Serial.println(" WRONG" );
  59.         delay(100);
  60.       }
  61.     }
  62.     inputString = "";
  63.     stringComplete = false;
  64.   }
  65. }
  66. void serialEvent() {
  67.   while (Serial.available()) {
  68.     char inChar = (char)Serial.read();
  69.     inputString += inChar;
  70.     if (inChar == '\n' || inChar == '\r') {
  71.       stringComplete = true;
  72.     }
  73.   }
  74. }
  75. void openDoor() {
  76.   digitalWrite(myelectro, LOW);
  77.   delay(100);
  78. }
  79. void closeDoor() {
  80.   digitalWrite(myelectro, HIGH);
  81. }


Merci d'avance et bonne soirée à tous.


Message édité par AIEMERIC le 26-04-2019 à 21:35:15

---------------
Ryzen 9 5950X - AORUS X570 MASTER - WC custom - 32 GB de ram HyperX Fury RGB DDR4 3600mhz CL16 - RTX 3080TI - Samsung 980 pro 500gb - 3To RAID 0 HDD - 500GB 7200 - Dark power pro 12 1500W- Thermaltake core P5 TG V2
Reply

Marsh Posté le 26-04-2019 à 21:32:55   

Reply

Marsh Posté le 27-04-2019 à 11:05:43    

Bonjour,

 

Avant tout ta version de la librairie est à jour et ton IDE Arduino aussi ?
Apparemment c'est ça : https://github.com/stm32duino/M24SR64-Y
Tu dis trouver très peu d'infos mais il y a des explications, des exemples, et rien ne t'empêche d'ouvrir une issue.

 

En lisant un peu ton erreur, ça renvoie à la ligne 41 du fichier Message.h qui fait cette inclusion :
#include <algorithm>

 

A première vue ça me fait penser à un morceau de la STL, qui n'est normalement pas supportée par Arduino il me semble donc je suppose qu'il existe une sorte de portage partiel pour Arduino pour gérer ça, ainsi que Vector et quelques autres trucs (?).
On peut supposer (toujours :o) qu'il y a donc une autre librairie à importer pour en ajouter le support.
Peut être aussi que comme c'est du ST il y a des particularités liées à eux.
Cherche dans ce sens si tu veux creuser toi même.


Message édité par TotalRecall le 27-04-2019 à 11:07:22

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 13-05-2019 à 21:15:46    

Bonsoir,
Je ne suis pas un expert en programmation, de très loin, je débute sur arduino moi aussi.
Tu inclues bien la librairie wire.h pour l'I2C, donc je ne vois pas pourquoi ça ne fonctionne pas...
J'ai trouvé ces deux posts sur le forum arduino :
https://forum.arduino.cc/index.php?topic=436205.0
https://forum.arduino.cc/index.php?topic=246841.0
Pas sur que ça t'aide mais bon, ça peut te mettre sur la voie :)


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 13-05-2019 à 21:30:57    

hello,
si tu utilises le logiciel arduino, tu as bien ajouté la lib dans le logiciel ?
moi je fais : Croquis, Inclure une bibliohèque, Ajouter la bibliothèque zip

Reply

Marsh Posté le 13-05-2019 à 21:50:44    

Eb regardant l'erreur, et le contenu de l'include NDefNfcTag.h de la première erreur, je vois que l'erreur est sur #include "Message.h"
le Message.h n'est pas trouvé.
Vérifie qu'il est bien présent, au pire tu re-télécharges toute la librairie, et tu la copies entièrement dans ton dossier d'include (en utilisant la méthode de s123459).
Sinon, utilise le gestionnaire de bibliothèque de l'IDE Arduino, il marhce bien :
https://reho.st/self/783ab7cd0ed43b3b5897d975cc7705feec56e96e.png


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 14-05-2019 à 13:30:16    

MilesTEG1 a écrit :

le Message.h n'est pas trouvé.

Non. Dans message.h il y a un include <algorithm> et c'est ça que le compilateur ne trouve pas. Cf. premier message de TotalRecall.

Reply

Marsh Posté le 14-05-2019 à 15:18:20    

Ha oui effectivement... J'ai rien dit alors :o
Désolé ;)


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 14-05-2019 à 15:32:35    

L'erreur est humaine. :o
Concernant le code initial, stringComplete ne devrait pas être volatile?

Reply

Marsh Posté le 14-05-2019 à 15:51:26    

Ça veut dire quoi "volatile" pour une variable ?


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 14-05-2019 à 17:16:53    

et les moteurs de recherche? :o

Reply

Marsh Posté le 14-05-2019 à 17:16:53   

Reply

Marsh Posté le 14-05-2019 à 17:23:59    

rat de combat a écrit :

et les moteurs de recherche? :o


Sur le moment je n’avais pas le temps, je devais faire cours  :o  
Mais maintenant je peux aller chercher  :whistle:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 14-05-2019 à 17:35:54    

Bon ben même après lecture ici, j'ai toujours du mal à comprendre concrètement...
(je précise que je ne suis pas versé dans le développement :o mes cours de programmation remonte à quand j'étais à la FAC, j'ai fais une année de C... c'est tout).


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 14-05-2019 à 18:18:05    

T'as pas choisi le meilleur site. :o
Pour faire simple, volatile dit au compilateur que la variable peut changer à tout moment, le plus souvent car il y a une interruption qui la modifie. Le compilateur va donc recharger la valeur de la variable (depuis la RAM) à chaque accès plutôt que de garder une ancienne valeur dans un registre.

Reply

Marsh Posté le 14-05-2019 à 20:52:06    

Merci. Ça éclairci un peu ma pauvre lanterne...
Mais disons que je ne dois pas être câblé pour comprendre vraiment les nuances de la programmation...
J'ai (et j'ai toujours eu) du mal avec la notion de pointeurs...
Je peux potentiellement comprendre, mais il va me falloir du temps  :whistle:  :pt1cable:  
 
En tout cas merci pour l'explication  :jap:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed