DN23E08_modbus/uno_relay_modbus.ino

71 lines
1007 B
C++

#include <ModbusSerial.h>
#define BAUD_RATE 57600
#define SLAVE_ID 1
#define COIL_COUNT 4
#define COIL_START 1
#define COIL_0 4
#define COIL_1 5
#define COIL_2 6
#define COIL_3 7
#define STATUS_0 12
#define STATUS_1 11
ModbusSerial mb (Serial, SLAVE_ID);
void setup() {
Serial.begin (BAUD_RATE);
while (! Serial);
mb.config(BAUD_RATE);
mb.addCoil (0);
mb.addCoil (1);
mb.addCoil (2);
mb.addCoil (3);
mb.addIsts(0);
mb.addIsts(1);
pinMode(COIL_0, OUTPUT);
pinMode(COIL_1, OUTPUT);
pinMode(COIL_2, OUTPUT);
pinMode(COIL_3, OUTPUT);
pinMode(STATUS_0, INPUT_PULLUP);
pinMode(STATUS_1, INPUT_PULLUP);
}
void loop() {
mb.task();
readCoilValues();
writeStatusValues();
}
void readCoilValues() {
digitalWrite(COIL_0, mb.coil(0));
digitalWrite(COIL_1, mb.coil(1));
digitalWrite(COIL_2, mb.coil(2));
digitalWrite(COIL_3, mb.coil(3));
}
void writeStatusValues() {
mb.setIsts(0, !digitalRead(STATUS_0));
mb.setIsts(1, !digitalRead(STATUS_1));
}