Hi, i'm trying to use a Modbus device with an arduino zero. I'm using the ArduinoModbus library to do it. I'm trying to use the functions: holdingRegisterWrite and holdingRegisterRead, and they both give me error when using (Connection timed out). The code is:
#include <ArduinoModbus.h>
#include <ArduinoRS485.h>
const int BUTTON_PIN = 7;
int lastState = HIGH;
int currentState;
int buttonState = digitalRead(BUTTON_PIN);
void setup() {
Serial.begin(9600, SERIAL_8E1);
pinMode(BUTTON_PIN, INPUT_PULLUP);
while(!Serial){
if (!ModbusRTUClient.begin(9600, SERIAL_8E1)) {
Serial.println("Failed to start Modbus RTU Client!");
while (1);
}
}
}
void loop() {
currentState = digitalRead(BUTTON_PIN);
if(lastState == LOW && currentState == HIGH){
ModbusRTUClient.holdingRegisterRead(0x03, 0x00);
Serial.println(ModbusRTUClient.lastError());
ModbusRTUClient.holdingRegisterWrite(0x00, 0x30 , 0x1234);
Serial.println(ModbusRTUClient.lastError());
ModbusRTUClient.holdingRegisterWrite(0x25, 0x00, 1);
Serial.println(ModbusRTUClient.lastError());
ModbusRTUClient.coilWrite(0x21, 3, 1);
Serial.println(ModbusRTUClient.lastError());
}
lastState = currentState;
delay(100);
}
Thank you!