Есть проект, в котором Arduino UNO подключается к панели оператора Weintek по протоколу Modbus, с помощью модуля RS485: https://github.com/AReds4/Arduino2HMI/tree/main
В проекте используется библиотека: https://github.com/jossef/arduino-modbus-slave/tree/master/%20arduino-modbus-slave
На Arduino UNO все прекрасно работает, но если загрузить тот же самый проект на MEGA 2560 то ничего не работает. Контакты TXD и RXD модуля RS485 подключаются к пинам 0(RX) и 1(TX) платы UNO.
На MEGA если подключить контакты TXD и RXD к пинам 0 и 1, то модуль RS485 не подает никаких признаков жизни, если подключить к пинам 14 и 15, 16 и 17, 18 и 19, 20 и 21 то модуль RS485 начинает мигать. Как подключить Arduino MEGA 2560 к панели Weintek? Может нужно что-то изменить в библиотеке? Покопался в библиотеке, но так и не разобрался.
Код проекта:
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
modbusDevice regBank;
modbusSlave slave;
#define RedPin 12
#define YellowPin 11
#define GreenPin 10
void setup()
{
regBank.setId(0); ///Set Slave ID
regBank.add(1);//Red
regBank.add(2);//Yellow
regBank.add(3);//Green
pinMode(RedPin,OUTPUT);//Red Light
pinMode(YellowPin,OUTPUT);//Yellow Light
pinMode(GreenPin,OUTPUT);//Green light
slave._device = ®Bank;
slave.setBaud(9600);
}
void loop(){
//Control LED Lights's
int RedLED = regBank.get(1);
if (RedLED <= 0 && digitalRead(RedPin) == HIGH)digitalWrite(RedPin,LOW);
if (RedLED >= 1 && digitalRead(RedPin) == LOW)digitalWrite(RedPin,HIGH);
int YellowLED = regBank.get(2);//Controls the
if (YellowLED <= 0 && digitalRead(YellowPin) == HIGH)digitalWrite(YellowPin,LOW);
if (YellowLED >= 1 && digitalRead(YellowPin) == LOW)digitalWrite(YellowPin,HIGH);
int GreenLED = regBank.get(3);//Controls the Green
if (GreenLED <= 0 && digitalRead(GreenPin) == HIGH)digitalWrite(GreenPin,LOW);
if (GreenLED >= 1 && digitalRead(GreenPin) == LOW)digitalWrite(GreenPin,HIGH);
slave.run();
}