Problème de ports MegaUno 2560 pour Capteur de CO2

Bonjour,
Je souhaite programmer ce capteur de CO2: Infrared_CO2_Sensor_0-50000ppm_SKU__SEN0220-DFRobot

J’utilise une carte Arduino MegaUno 2560

Le programme fonctionne lorsque je branche les liaisons RX et TX respectivement sur les ports D10 et D11, comme définis initialement dans le programme : SoftwareSerial mySerial(10, 11); // RX, TX

Cependant, mon projet nécessite d’autres capteurs qui utilisent déjà ces deux ports, ainsi que les ports digitaux 12 et 13 (sur lesquels le capteur de CO2 fonctionne).
J’ai donc essayé d’utiliser les ports digitaux allant de 0 à 9, mais cela ne fonctionne pas.

En me renseignant sur les particularités de chaque port de la MegaUno, je n’ai pas vu de différence qui expliquerait pourquoi les ports allant de D10 à D13 fonctionne mais pas les ports allant de D0 à D10.

Est-ce que quelqu’un aurait une idée ?
Merci d’avance

Ci-dessous le programme entier :

/***************************************************

  • Infrared CO2 Sensor 0-50000ppm(Wide Range)

  • The follow example is used to detect CO2 concentration.

  • @author lg.gang(lg.gang@qq.com)

  • @version V1.0

  • @date 2016-6-6

  • GNU Lesser General Public License.

  • See http://www.gnu.org/licenses/ for details.

  • All above must be included in any redistribution

  • ****************************************************/
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(10, 11); // RX, TX
    unsigned char hexdata[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //Read the gas density command /Don’t change the order
    void setup() {

Serial.begin(9600);
while (!Serial) {

}
mySerial.begin(9600);

}

void loop() {
mySerial.write(hexdata,9);
delay(500);

for(int i=0,j=0;i<9;i++)
{
if (mySerial.available()>0)
{
long hi,lo,CO2;
int ch=mySerial.read();

if(i==2){ hi=ch; } //High concentration
if(i==3){ lo=ch; } //Low concentration
if(i==8) {
CO2=hi*256+lo; //CO2 concentration
Serial.print("CO2 concentration: ");
Serial.print(CO2);
Serial.println(“ppm”);
}

}

}

}

Bonjour La reponse se trouve dans les spec de SoftwareSerial. https://www.arduino.cc/en/Reference/SoftwareSerial

Il est explique que le port serie soft utilise des interruption et que toutes les pins ne sont pas compatible

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

Ca semble une bonne piste je pense