Bonjour a tous, J’utilisais depuis peu une arduino uno, cependant mon programme nécessitait plusieurs ports séries je me suis donc orientés vers une carte arduino méga afin d’obtenir plus de port serie. Cependant, mon code fonctionnant sur arduino uno ne fonctionne plus sur arduino mega :
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
const int MODE_TRANSMISSION = 5;
void setup()
{
// Open serial communications and wait for port to open:
pinMode(MODE_TRANSMISSION, OUTPUT);
Serial.begin(9600);
mySerial.begin(9600);
delay(500);
digitalWrite(MODE_TRANSMISSION, HIGH);
}
void loop() {
//if (x == 1) { //run the loop once*
delay(1000);
digitalWrite(5, HIGH);
byte message[] = {0x02, 0x30, 0x30, 0x05, 0x85, 0x03};
mySerial.write(message, sizeof(message));
digitalWrite(5, LOW);
char tab[17];
char tab2[5];
char tab3[5];
bool carteAutorisee = true;
bool carteRefusee = true;
char tabcarte[5] = "54CC9";
if (mySerial.available()) {
for (int i = 0; i < 17; i++) {
tab[i] = mySerial.read();
//Serial.print(tab[i], HEX);
//Serial.print(incomingByte, HEX);
// Serial.print(' ');
}
memcpy(tab2, tab + 10, 5);
for (int i = 0; i < 5; i++) {
//Serial.print("ITERATION : ");
//Serial.print(i);
Serial.print("\t");
//Serial.print(tab2[i], HEX);
Serial.print("\n");
}
Serial.print(tab2);
}
}
En effet, j’ai modifie ce code afin de ne plus utiliser la librairie SoftwareSerial et d’utiliser Serial3 (en
branchant mes pin RX/TX aux endroits adéquats).
const int MODE_TRANSMISSION = 5;
void setup()
{
// Open serial communications and wait for port to open:
pinMode(MODE_TRANSMISSION, OUTPUT);
Serial.begin(9600);
Serial3.begin(9600);
delay(500);
digitalWrite(MODE_TRANSMISSION, HIGH);
}
void loop() {
//if (x == 1) { //run the loop once*
delay(1000);
digitalWrite(5, HIGH);
byte message[] = {0x02, 0x30, 0x30, 0x05, 0x85, 0x03};
Serial3.write(message, sizeof(message));
digitalWrite(5, LOW);
char tab[17];
char tab2[5];
char tab3[5];
bool carteAutorisee = true;
bool carteRefusee = true;
char tabcarte[5] = "54CC9";
if (Serial3.available()) {
for (int i = 0; i < 17; i++) {
tab[i] = Serial3.read();
//Serial.print(tab[i], HEX);
//Serial.print(incomingByte, HEX);
// Serial.print(' ');
}
memcpy(tab2, tab + 10, 5);
for (int i = 0; i < 5; i++) {
//Serial.print("ITERATION : ");
//Serial.print(i);
Serial.print("\t");
//Serial.print(tab2[i], HEX);
Serial.print("\n");
}
Serial.print(tab2);
}
}
Cependant, mon code compile mais rien ne se passe sur le moniteur série alors qu’il fonctionnait parfaitement sur ma carte arduino uno. Merci pour tout aide que vous pourrez m’apporter.