0

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 <ICSC.h>
ICSC icsc(Serial1, 1, 7); //Stream, ID, DEpin
void setup() {
 Serial.begin(9600);
 Serial1.begin(9600);
 icsc.begin();
 icsc.registerCommand('R', &showTemperature);
}
void loop() {
 icsc.send(2, 'T', 0, NULL);
 icsc.process();
}
void showTemperature() {
 Serial.println("ACK");
}

And here is the Slave code:

#include <ICSC.h>
ICSC icsc(Serial, 2, 7); //Stream, ID, DEpin
String strAck = "ProMini2:ACK";
void setup() {
 Serial.begin(9600);
 icsc.begin();
 icsc.registerCommand('T', &sendTemperature);
}
void loop() {
 icsc.process();
}
void sendTemperature() {
 icsc.send(1, 'R', sizeof(strAck) + 1, (char*)&strAck);
}

Assume that there is just one slave and one master. I tried this code but got no answer. Where is the error?

dda
1,5951 gold badge12 silver badges17 bronze badges
asked Dec 14, 2017 at 15:49

2 Answers 2

2

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 &d, uint8_t station);
ICSC(Stream *d, uint8_t station, int depin);
ICSC(Stream &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:

  1. Don't spam the sending like you are. Send periodically, not constantly, or you will never be able to receive.
  2. You cannot use String objects like that.
  3. 1 and 2 aren't good choices of station IDs. Yes, they work, but not great, since 1 is the SOH character.
answered Dec 14, 2017 at 15:53
12
  • But what if i begin both Serial and Serial1 right after eachother ? Which one will be assigned to ICSC? Commented Dec 14, 2017 at 16:46
  • Whichever one you assign to ICSC. Commented Dec 14, 2017 at 16:46
  • I'll give it a try tomorrow and will let you know. Thx in advance. Commented Dec 14, 2017 at 16:51
  • Can i use this constractors in current version of icsc which i'm using? Commented Dec 14, 2017 at 17:16
  • That is the constructors for the version on Github. Commented Dec 14, 2017 at 17:17
1

The documentation for the library notes a few different possible initialization methods:

ICSC.begin(stationId, baudRate);
ICSC.begin(stationId, baudRate, &SerialPort);
ICSC.begin(stationId, baudRate, &SerialPort, DEPin);
ICSC.begin(stationId, baudRate, DEPin);

So, if you need to define both a serial port and DE Pin, use the third option.

EDIT: Disregard this answer, as the library has changed initialization methods.

answered Dec 14, 2017 at 15:53
2
  • I tried that, but gives error: No overload method matches the (int, int, &, int) was found. Something like that :) Commented Dec 14, 2017 at 16:45
  • That documentation is out of date. Commented Dec 14, 2017 at 16:56

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.