Есть проект, в котором 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(); 
}

