Je viens d'apprendre qu'il y aurait un conflit entre les bibliothèques GSM et SoftwareSerial, car le GSM aurait sa propre version de SoftwareSerial.
Je me tourne vers vous pour savoir s'il y a une solution à cela, sans utiliser AltSoftSerial car ça me ferais revoir énormément de choses, étant donné la complexité de mes programmes..
Voilà mon erreur de compilation :
GSM\GSM3SoftSerial.cpp.o: In function `__vector_9':
C:\Elec\Arduino\arduino-1.6.5\libraries\GSM\src/GSM3SoftSerial.cpp:499: multiple definition of `__vector_9'
SoftwareSerial\SoftwareSerial.cpp.o:C:\Elec\Arduino\arduino-1.6.5\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:227: first defined here
c:/elec/arduino/arduino-1.6.5/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
GSM\GSM3SoftSerial.cpp.o: In function `GSM3SoftSerial::spaceAvailable()':
C:\Elec\Arduino\arduino-1.6.5\libraries\GSM\src/GSM3SoftSerial.cpp:487: multiple definition of `__vector_10'
SoftwareSerial\SoftwareSerial.cpp.o:C:\Elec\Arduino\arduino-1.6.5\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:392: first defined here
GSM\GSM3SoftSerial.cpp.o: In function `GSM3SoftSerial::spaceAvailable()':
C:\Elec\Arduino\arduino-1.6.5\libraries\GSM\src/GSM3SoftSerial.cpp:487: multiple definition of `__vector_11'
SoftwareSerial\SoftwareSerial.cpp.o:C:\Elec\Arduino\arduino-1.6.5\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:392: first defined here
collect2.exe: error: ld returned 1 exit status
Erreur lors de la compilation.
Voilà, si jamais quelqu'un saurait m'aider, je lui en serais reconnaissant !
GSM3SoftSerial utilise les pins TX et RX en 3 et 2. SoftwareSerial te laisse libre de choisir les pins qui t'arrangent, à passer en paramètres au constructeur.
Rien ne t'empêche d'utiliser 2 instances de SoftwareSerial, donc, et donc d'éliminer GSM3SoftSerial.
Les principales méthodes begin, read, write ont la même signature, cela ne devrait pas poser trop de problèmes.
Le problème est que les deux librairies possèdent des fonction - apparemment des routines d'interruption - qui portent le même nom, et donc rendent ces librairies incompatibles entre elles.
Les deux bibliothèques installent les mêmes routines d'interruption.
Dommage que GSM3SoftSerial ne permette pas d'utiliser d'autres pins que 2 et 3. Cela aurait permis de créer deux instances.
Il te faut probablement envisager un autre moyen de communication entre MEGA et YUN.
Quelle distance ?
bonjour,
pour utiliser SoftwareSerial en plus sur une mega?
la mega a plusieurs pin série d'origine.
serial, serial1, 4 de mémoire
The Arduino Mega has three additional serial ports: Serial1 on pins 19 (RX) and 18 (TX), Serial2 on pins 17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX).
Sauf que je communique pas entre 2 mega mais entre une mega et une Yun donc impossible pour moi d’utiliser serial1,2,3 ou 4.
J’avais déjà réfléchis à cette option, sinon la distance entre les deux cartes est de quelques centimètres (même pas 10)
J’ai bloqué pendant 1 mois et demi sur la communication entre les deux cartes et ça m’embeterais beaucoup de devoir renoncer au SoftwareSerial..
Non le GSM lui est sur la mega, et c’est la compilation de la mega qui ne fonctionne pas.. je n’ai pas le matériel je ne l’aurais que lundi à 14:00 donc je peux rien essayer pour le moment..
Si ton GSM est sur la MEGA, rien ne t'empêche de communiquer avec la YUN sans passer par SoftwareSerial, simplement en utilisant une vraie ligne série : Serial1, Serial2, ou Serial3.