Salut à tous,
Je suis sur la fin de mon projet, il ne me reste plus que la com RS485 et là... Ca bloque....
je suis sur un Méga2560 avec ce module.
J'ai branché RE/DE sur la pin 13, le Di sur Tx3(14) et Ro sur Rx3(15).
En face, j'ai un système avec une RS485 4 fils que je dois interroger.
Mon branchement: depuis mon système, Tx-/Rx- ensemble sur la pin A du module et Tx+/Rx+ ensemble sur la pin B.
Mon programme est un simple programme de test qui ne fait que de l'émmission depuis Arduino:
/*
Multple Serial test
Receives from the main serial port, sends to the others.
Receives from serial port 1, sends to the main serial (Serial 0).
This example works only with boards with more than one serial like Arduino Mega, Due, Zero etc
The circuit:
* Any serial device attached to Serial port 1
* Serial monitor open on Serial port 0:
created 30 Dec. 2008
modified 20 May 2012
by Tom Igoe & Jed Roach
modified 27 Nov 2015
by Arturo Guadalupi
This example code is in the public domain.
*/
const unsigned int RS_485_TX_CTRL = 13; //RS485 Direction control
const unsigned int RS485_TX = HIGH;
const unsigned int RS485_RX = LOW;
unsigned char Send_Read_DM[3];
int cpt = 0;
void setup() {
// initialize both serial ports:
Serial.begin(9600);
Serial3.begin(115200);
pinMode(RS_485_TX_CTRL, OUTPUT); /// Important
}
void loop() {
if (Serial3.available()) { // Obliger de faire l'un ou l'autre
// Port Serie en Réception
digitalWrite(RS_485_TX_CTRL, RS485_RX);
int inByte = Serial3.read();
Serial.print(char(inByte));
}
// read from port 0, send to port 3: // Obliger de faire l'un ou l'autre
if (Serial.available() && cpt < 1) {
//int inByte = Serial.read();
cpt++;
// Lecture zone 1
Send_Read_DM[0] = 0x02;//char(50);//
Send_Read_DM[1] = 0x01;//char(49);//
Send_Read_DM[2] = 0x01;//char(49);//
Serial3.flush();
// Port Serie en émmission
digitalWrite(RS_485_TX_CTRL, RS485_TX);
//Serial3.write(inByte);
Serial3.write(Send_Read_DM, 3);
}
}
Mon souci est simple: J'ai un terminal en espion, et donc je vois ce qu'envoi l'Arduino. Lorsque mon système externe est branché sur les deux fils A&B je ne vois pas ma commande sortir de l'Arduino, mais dés que je débranche un des deux fils A ou B ou les deux, je vois bien ma commande sortir de l'Arduino...
Question pourquoi?
Merci