Libreria RS485 non funziona con arduino due

Cia a tutti come da titolo sto cercando di usare la libreria RS485 scaricata dal library manager dell'ide ma questa non funziona con arduino due, poichè dovrei usare la libreria arduino modbus che dipende da questa 485 sono bloccato.

Qualcuno ha avuto lo stesso problema e ha risolto in qualche modo?

Grazie

che libreria è?...cosa fa di preciso?...

Parla della libreria ufficiale Arduino 485 (la trovi ne library manager) ... credo sia fatta per la serie MKR ...

Per farla funzionare con la DUE credo che occorra andare a vedere all'interno che pin usa per TX ed RX e modificarli di conseguenza.

Guglielmo

gpb01: Parla della libreria ufficiale Arduino 485 (la trovi ne library manager) ... credo sia fatta per la serie MKR ...

Per farla funzionare con la DUE credo che occorra andare a vedere all'interno che pin usa per TX ed RX e modificarli di conseguenza.

Guglielmo

Si è proprio quella ufficiale e ho visto per arduino uno usa il pin 1 per TX il pin 2 per DE e poi di default usa il pin -1 per RE, ma il problema non nasce sui pin, ma mi dice che il problema sta nel file HrdwareSerial.h che per istanziare la classe RS485 col begin ci vogliono due argomenti, ma il begin della seriale per arduino due ne chiede solo uno, almeno quando provo a compilarlo con l'ide questo è l'errore che riscontro.

ciao...non vorrei sparare una pu**anata ma la Serial, derivata da Stream, HardwareSerial, etc...hanno due costruttori; uno che accetta un argomento (long baud) ed uno che ne accetta due (long baud, uint8_t); il secondo argomento del secondo costruttore fa riferimento a delle #define tipo :

#define SERIAL_5N1 0x00
#define SERIAL_6N1 0x02
#define SERIAL_7N1 0x04
#define SERIAL_8N1 0x06

dove l'ultimo è quello di default...nel senso che se usi il primo costruttore, dove c'è solo un argomento (long baud), lui assegna in automatico il SERIAL_8N1 al secondo argomento. Detto questo...non conosco la DUE e non ho letto tutte le librerie a fondo per vedere se c'è qualche "eccezione" riferita proprio alla DUE...casomai posta l'intero testo dell'errore che vediamo.

Questi sono gli errori rilevati dall'IDE

Arduino:1.8.9 (Windows 10), Scheda:"Arduino Due (Programming Port)"

Opzioni di compilazione cambiate, ricompilo tutto D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp: In member function 'virtual void RS485Class::begin(long unsigned int, uint16_t)':

D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp:54:34: error: no matching function for call to 'HardwareSerial::begin(long unsigned int&, uint16_t&)'

_serial->begin(baudrate, config);

^

D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp:54:34: note: candidate is:

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

from D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.h:23,

from D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp:20:

C:\Users\Enzo-PC\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\Enzo-PC\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/HardwareSerial.h:29:18: note: candidate expects 1 argument, 2 provided

D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp: In member function 'void RS485Class::sendBreakMicroseconds(unsigned int)':

D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp:161:36: error: no matching function for call to 'HardwareSerial::begin(long unsigned int&, uint16_t&)'

_serial->begin(_baudrate, _config);

^

D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp:161:36: note: candidate is:

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

from D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.h:23,

from D:\Enzo-PC\Documents\Arduino\libraries\ArduinoRS485\src\RS485.cpp:20:

C:\Users\Enzo-PC\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\Enzo-PC\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 Errore durante la compilazione per la scheda Arduino Due (Programming Port).

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione "Mostra un output dettagliato durante la compilazione" in "File -> Impostazioni"

E questo è il link relativo al file HardwareSerial.h per arduino due

https://github.com/arduino/ArduinoCore-sam/blob/master/cores/arduino/HardwareSerial.h

ok…ho fatto un po’ di ricerche…ed ho scoperto che ho sparato una pu**anata…nel senso che la DUE NON gestisce quelle #define per formato, parità e bit di stop!..c’è il modo (parziale) ma lo si deve fare a mano nei vari registri del processore…lascio a te.
Quindi è ovvio che di base quando selezioni la DUE, fino ad ora non l’avevo mai inclusa e selezionata, fa riferimento tutt’altre classi Serial, Stream, Hardware etc…dove di begin() ce n’è solo uno con un solo argomento i baudrate.
per quel che ho potuto fare, non ho una DUE e quindi non posso provare, “basta” modificare un po’ la libreria RS485 in modo da avere un solo begin() con un solo argomento in ingresso…così mi compila senza errori…se funziona non so.
ti allego la libreria modificata…vedi tu cosa ti succede.

ArduinoRS485-master-modified.zip (7.34 KB)

Si infatti sono modifiche che avevo pensato di fare anche io le devo provare

La libreria RS485 con le modifiche va, ma per la libreria modbus anche quella è scritta prevalentemente per arduino uno, qualcuno conosce qualche libreria modbus compatibile con arduino due, le ho provate tutte quelle del library manager ma sono tutte per arduino uno.

Grazie

che libreria modbus usi?

Ho provato tutte quelle del manager dell'ide

hai dato un’occhiata qui

brunello22: hai dato un'occhiata qui

Si ma questa libreria gestisce solo gli holding register.