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");
}
}
}
}