Code Monkey home page Code Monkey logo

arduinors485's Introduction

ArduinoRS485 Library for Arduino

Check Arduino status Compile Examples status Spell Check status

Enables sending and receiving data using the RS-485 standard with RS-485 shields, like the MKR 485 Shield.

This library supports the Maxim Integrated MAX3157 and equivalent chipsets.

For more information about this library please visit us at http://www.arduino.cc/en/Reference/ArduinoRS485

arduinors485's People

Contributors

aentinger avatar canchebagur avatar dependabot[bot] avatar facchinm avatar fra87 avatar giulcioffi avatar hannes7eicher avatar jhansson-ard avatar karlsoderby avatar manchoz avatar per1234 avatar pmmarquez avatar pnndra avatar rd-benson avatar rocketct avatar sandeepmistry avatar sebromero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arduinors485's Issues

default pin #defines acting wrong?

Hi!

I followed some dmx-tutorial and wired my nano to pins A5 and A6 which are and were working great. Then I added an interrupt to the code with incoming pin 2 and it didn't work out with the this library anymore. I fixed the thing by commenting out definitions inside the #ifdef AVR part on the rs485.h and replacing the pins with A5 and A6 (like they are again underneath) and now I think everything works pretty much as they should on nano. I just really don't understand at this point, how did the dmx work earlier with A5 and A6?

invalid conversion from 'uint16_t' to 'SerialConfig'

In last update of ESP8266 SDK, I got many errors:

.pio\libdeps\esp12e\ArduinoRS485\src\RS485.cpp:65:28: error: invalid conversion from 'uint16_t' {aka 'short unsigned int'} to 'SerialConfig' [-fpermissive]

error occurs in _serial->begin call.

I solved problem with following changes:

In RS485.h:

#ifdef __AVR__
#define RS485_DEFAULT_DE_PIN 2
#define RS485_DEFAULT_RE_PIN -1
#elif defined(ESP32) || defined(ESP8266)
#define RS485_DEFAULT_DE_PIN 0
#define RS485_DEFAULT_RE_PIN 0
#else
#define RS485_DEFAULT_DE_PIN A6
#define RS485_DEFAULT_RE_PIN A5
#endif

#if defined(ESP32) || defined(ESP8266)
#define RS485_SER_CONF_TYPE SerialConfig
#else
#define RS485_SER_CONF_TYPE uint16_t
#endif
....

class RS485Class{
....
RS485_SER_CONF_TYPE _config;
...
}

In RS485.cpp:

_serial->begin(baudrate, (RS485_SER_CONF_TYPE)config);

Add support for UNO R4 WiFi board

Compilation of the library fails for the UNO R4 WiFi board:

WARNING: library ArduinoModbus claims to run on megaavr, samd, mbed_nano, mbed_portenta, mbed_opta architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
WARNING: library ArduinoRS485 claims to run on samd, mbed_portenta, mbed_opta architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:17: error: field 'it_interval' has incomplete type 'timeval'
  struct timeval it_interval; /* timer interval */
                 ^~~~~~~~~~~
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:264:17: error: field 'it_value' has incomplete type 'timeval'
  struct timeval it_value; /* current value */
                 ^~~~~~~~
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:0:
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:102:35: error: 'fd_set' has not been declared
     int (*select) (modbus_t *ctx, fd_set *rset, struct timeval *tv, int msg_length);
                                   ^~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:113:20: error: field 'response_timeout' has incomplete type 'timeval'
     struct timeval response_timeout;
                    ^~~~~~~~~~~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:0:
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:114:20: error: field 'byte_timeout' has incomplete type 'timeval'
     struct timeval byte_timeout;
                    ^~~~~~~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:830:46: error: 'fd_set' has not been declared
 static int _modbus_tcp_select(modbus_t *ctx, fd_set *rset, struct timeval *tv, int length_to_read)
                                              ^~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp: In function 'int _modbus_tcp_select(modbus_t*, int*, timeval*, int)':
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:838:60: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                            ^~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:838:62: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                              ^~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:838:82: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                                                  ^~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:838:84: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                                                    ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-tcp.cpp:80:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:17: error: field 'it_interval' has incomplete type 'timeval'
  struct timeval it_interval; /* timer interval */
                 ^~~~~~~~~~~
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:264:17: error: field 'it_value' has incomplete type 'timeval'
  struct timeval it_value; /* current value */
                 ^~~~~~~~
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:0:
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:102:35: error: 'fd_set' has not been declared
     int (*select) (modbus_t *ctx, fd_set *rset, struct timeval *tv, int msg_length);
                                   ^~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:113:20: error: field 'response_timeout' has incomplete type 'timeval'
     struct timeval response_timeout;
                    ^~~~~~~~~~~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:0:
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:114:20: error: field 'byte_timeout' has incomplete type 'timeval'
     struct timeval byte_timeout;
                    ^~~~~~~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:1243:46: error: 'fd_set' has not been declared
 static int _modbus_rtu_select(modbus_t *ctx, fd_set *rset,
                                              ^~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp: In function 'int _modbus_rtu_select(modbus_t*, int*, timeval*, int)':
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:1262:60: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                            ^~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:1262:62: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                              ^~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:1262:82: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                                                  ^~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~
C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:1262:84: error: invalid use of incomplete type 'struct timeval'
     unsigned long wait_time_millis = (tv == NULL) ? 0 : (tv->tv_sec * 1000) + (tv->tv_usec / 1000);
                                                                                    ^~~~~~~
In file included from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-private.h:23:0,
                 from C:\Users\micha\OneDrive\Documents\Arduino\libraries\ArduinoModbus\src\libmodbus\modbus-rtu.cpp:27:
c:\users\micha\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\time.h:263:9: note: forward declaration of 'struct timeval'
  struct timeval it_interval; /* timer interval */
         ^~~~~~~

exit status 1

Compilation error: exit status 1

Failure of compiling Arduino Due

Arduino: 1.8.12 (Windows 10), Board: "Arduino Due (Programming Port)"

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp: In member function 'virtual void RS485Class::begin(long unsigned int, uint16_t)':

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:53:34: error: no matching function for call to 'HardwareSerial::begin(long unsigned int&, uint16_t&)'

   _serial->begin(baudrate, config);

                                  ^

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:53:34: note: candidate is:

In file included from C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Arduino.h:195:0,

                 from C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.h:23,

                 from C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:20:

C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note: virtual void HardwareSerial::begin(long unsigned int)

     virtual void begin(unsigned long);

                  ^

C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note:   candidate expects 1 argument, 2 provided

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp: In member function 'void RS485Class::sendBreak(unsigned int)':

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:149:36: error: no matching function for call to 'HardwareSerial::begin(long unsigned int&, uint16_t&)'

   _serial->begin(_baudrate, _config);

                                    ^

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:149:36: note: candidate is:

In file included from C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Arduino.h:195:0,

                 from C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.h:23,

                 from C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:20:

C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note: virtual void HardwareSerial::begin(long unsigned int)

     virtual void begin(unsigned long);

                  ^

C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note:   candidate expects 1 argument, 2 provided

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp: In member function 'void RS485Class::sendBreakMicroseconds(unsigned int)':

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:159:36: error: no matching function for call to 'HardwareSerial::begin(long unsigned int&, uint16_t&)'

   _serial->begin(_baudrate, _config);

                                    ^

C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:159:36: note: candidate is:

In file included from C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Arduino.h:195:0,

                 from C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.h:23,

                 from C:\Users\chris\OneDrive\Dokumente\Arduino\libraries\ArduinoRS485\src\RS485.cpp:20:

C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note: virtual void HardwareSerial::begin(long unsigned int)

     virtual void begin(unsigned long);

                  ^

C:\Users\chris\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note:   candidate expects 1 argument, 2 provided

exit status 1
Fehler beim Kompilieren für das Board Arduino Due (Programming Port).

Compatible with raspberry pico ?

Hello,

I would like use the ArduinoModbus with the raspberry pico.
But during the compilation, the errors appear.

Indexing .pio/build/pico/libFrameworkArduino.a In file included from .pio/libdeps/pico/ArduinoRS485/src/RS485.cpp:20: .pio/libdeps/pico/ArduinoRS485/src/RS485.h:44:30: error: 'A6' was not declared in this scope; did you mean 'A3'? 44 | #define RS485_DEFAULT_DE_PIN A6 | ^~ .pio/libdeps/pico/ArduinoRS485/src/RS485.cpp:204:62: note: in expansion of macro 'RS485_DEFAULT_DE_PIN' 204 | RS485Class RS485(SERIAL_PORT_HARDWARE, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN); | ^~~~~~~~~~~~~~~~~~~~ .pio/libdeps/pico/ArduinoRS485/src/RS485.h:45:30: error: 'A5' was not declared in this scope; did you mean 'A3'? 45 | #define RS485_DEFAULT_RE_PIN A5 | ^~ .pio/libdeps/pico/ArduinoRS485/src/RS485.cpp:204:84: note: in expansion of macro 'RS485_DEFAULT_RE_PIN' 204 | RS485Class RS485(SERIAL_PORT_HARDWARE, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN); | ^~~~~~~~~~~~~~~~~~~~ *** [.pio/build/pico/libcb1/ArduinoRS485/RS485.cpp.o] Error 1

can it be used with a raspberry ?

Thank you.

`setDelays()` is undocumented

The library's public API includes a setDelays function:

void setDelays(int predelay, int postdelay);

But this function is not mentioned in the documentation (Arduino library documentation).

The entire public API of the library must be documented.

An example sketch should be provided that demonstrates its usage, including whether it must be called before a begin() call, after, or does it not matter?

Raspberry pi pico w issue

Looks like this library is not compatible with raspberry pi pico w, since it is generating errors during compiling.

Library does not support SAMD21 M0 boards

Arduino: 1.8.12 (Linux), Board: "Arduino M0"

In file included from /root/Arduino/libraries/ArduinoRS485/src/RS485.cpp:20:0:
/root/Arduino/libraries/ArduinoRS485/src/RS485.h:35:30: error: 'A6' was not declared in this scope
#define RS845_DEFAULT_DE_PIN A6
^
/root/Arduino/libraries/ArduinoRS485/src/RS485.cpp:169:62: note: in expansion of macro 'RS845_DEFAULT_DE_PIN'
RS485Class RS485(SERIAL_PORT_HARDWARE, RS485_DEFAULT_TX_PIN, RS845_DEFAULT_DE_PIN, RS845_DEFAULT_RE_PIN);
^~~~~~~~~~~~~~~~~~~~
/root/Arduino/libraries/ArduinoRS485/src/RS485.h:35:30: note: suggested alternative: 'A5'
#define RS845_DEFAULT_DE_PIN A6
^
/root/Arduino/libraries/ArduinoRS485/src/RS485.cpp:169:62: note: in expansion of macro 'RS845_DEFAULT_DE_PIN'
RS485Class RS485(SERIAL_PORT_HARDWARE, RS485_DEFAULT_TX_PIN, RS845_DEFAULT_DE_PIN, RS845_DEFAULT_RE_PIN);
^~~~~~~~~~~~~~~~~~~~

Connecting to non-shield RS485 TTl to RS485 device.

I want to used this with a standalone TTL to RS485 IC on a Teensy. Can you tell me what serial pins are used in the library for TX, RX, RE (receiver enable) and DE (driver enable). Also where in the code is the serial port and the control pins defined or can be changed?

Possibility to choose the Serial port to work with

Currently (1.0.0), the library automatically creates a RS485 object running on the SERIAL_PORT_HARDWARE serial port (https://github.com/arduino-libraries/ArduinoRS485/blob/master/src/RS485.cpp#L181).
Although it might be idiomatic for Arduino libraries to automatically create an object to work with, for this library it causes trouble on some platforms and use cases:

  • If you want to use a different Serial port than Serial, you still have to live with the automatically created RS485 object on Serial, which is a waste of memory.
  • On some platforms (e.g. some STM32), Serial is of type USBSerial. As the RS485 constructor only accepts HardwareSerial, and you cannot set another Serial port, this causes that the library cannot be compiled for these platforms. Workaround is to remove L181 of RS485.cpp.

So actually, I propose two changes:

  • Use Stream as interface type for the RS485 constructor, so it can be created with HardwareSerial as well as with USBSerial interfaces.
  • Do not create a RS485 object on SERIAL_PORT_HARDWARE, but rather require the user to actively chose the desired port as a parameter in the begin method (I guess it is ok to have SERIAL_PORT_HARDWARE as the default value for the port parameter.) Drawback: This change is not backwards-compatible. Current users of the library will have to add a line to create the RS485 object manually.

Probable error in end function

Hello

While debugging an (unrelated) issue I had a look at the source code of the library and found this in the end function in RS485.cpp (line 75 and following):

  if (_rePin > -1) {
    digitalWrite(_rePin, LOW);
    pinMode(_dePin, INPUT);
  }
  
  if (_dePin > -1) {
    digitalWrite(_dePin, LOW);
    pinMode(_rePin, INPUT);
  }

I think the _dePin and _rePin in the pinMode functions are swapped.

I assume this is not a real issue, since not a lot of people would use the end function, but for completeness sake maybe it is to fix

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.