Problem using ICSC (by majenkotech) in RS485 bus I want to communicate with an RS485 Bus consisting of 5 Arduino Pro Minis as slaves and one Arduino Mega 2560 as Master. I found a great library for this.

According to the documentation provided by the author of library I can use:

ICSC icsc(1, 9600, 7); //ID, BaudRate, DEpin

But I also have to define a Serial port for ICSC to work with:

ICSC icsc(1, 9600, Serial1);

I cannot mix these two sentences. I mean I cannot define both DEpin and Serial port for the ICSC in one sentence. But I need it to be defined. I don't want to use Serial for that, which I need for Serial Monitor. I want to use Serial1 for this. What can I do? I couldn't find any updated documentation about this.

UPDATE:

I found out how to define Serial port and DEpin for ICSC. The problem is I cannot get an answer!

Here is Master code:

#include &lt;ICSC.h&gt;
ICSC icsc(Serial1, 1, 7); //Stream, ID, DEpin

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  icsc.begin();
  icsc.registerCommand('R', &amp;showTemperature);
}

void loop() {
  icsc.send(2, 'T', 0, NULL);
  icsc.process();
}

void showTemperature() {
  Serial.println("ACK");
}


And here is the Slave code:

#include &lt;ICSC.h&gt;
ICSC icsc(Serial, 2, 7); //Stream, ID, DEpin
String strAck = "ProMini2:ACK";

void setup() {
  Serial.begin(9600);
  icsc.begin();
  icsc.registerCommand('T', &amp;sendTemperature);
}

void loop() {
  icsc.process();
}

void sendTemperature() {
  icsc.send(1, 'R', sizeof(strAck) + 1, (char*)&amp;strAck);
}


Assume that there is just one slave and one master. I tried this code but got no answer. Where is the error?
The documentation for the constructors is out of date (I am re-writing as we speak, and is now here).

The constructors in the header file are like this:

ICSC(Stream *d, uint8_t station);
ICSC(Stream &amp;d, uint8_t station);
ICSC(Stream *d, uint8_t station, int depin);
ICSC(Stream &amp;d, uint8_t station, int depin);


That means you need to provide the serial object as the first entry:

ICSC icsc(Serial1, 'A', 5);


You need to manually start the serial object before ICSC.

void setup() {
    Serial1.begin(9600);
    icsc.begin();
}


This change was made to enable support for software serial and other Stream based devices.



Addendum for your update:


Don't spam the sending like you are. Send periodically, not constantly, or you will never be able to receive.
You cannot use String objects like that. 
1 and 2 aren't good choices of station IDs. Yes, they work, but not great, since 1 is the SOH character.