71 lines
1007 B
C++
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));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|