/*
ModbusRTU ESP8266/ESP32
Read multiple coils from slave device example
(c)2019 Alexander Emelianov ([email protected])
https://github.com/emelianov/modbus-esp8266
modified 13 May 2020
by brainelectronics
This code is licensed under the BSD New License. See LICENSE.txt for more info.
*/
#include <ModbusRTU.h>
ModbusRTU mb;
bool cbWrite(Modbus::ResultCode event, uint16_t transactionId, void* data) {
#ifdef ESP8266
Serial.printf_P("Request result: 0x%02X, Mem: %d\n", event, ESP.getFreeHeap());
#elif ESP32
Serial.printf_P("Request result: 0x%02X, Mem: %d\n", event, ESP.getFreeHeap());
#else
Serial.print("Request result: 0x");
Serial.print(event, HEX);
#endif
return true;
}
void setup() {
Serial.begin(9600, SERIAL_8N1);
mb.begin(&Serial);
mb.master();
}
bool coils[8];
bool coils_on[8] = {true, true, true, true, true, true, true, true };
bool coils_off[8] = {false, false, false, false, false, false, false, false };
void loop() {
delay(500);
if (!mb.slave()) {
mb.readCoil(1, 0, coils, 8, cbWrite);
// for (int i = 0; i < 8; i++) {
// Serial.print(coils[i]);
// }
}
// for (int i = 0; i < 8; i++) {
// if (!mb.slave()) {
mb.writeCoil(1, 0, coils_on, 2, cbWrite);
delay(500);
// }
// }
// for (int i = 0; i < 8; i++) {
// if (!mb.slave()) {
mb.writeCoil(1, 0, coils_off, 2, cbWrite);
delay(500);
// }
// }
mb.task();
yield();
}
//------------------------
/*
ModbusRTU ESP8266/ESP32
Simple slave example
(c)2019 Alexander Emelianov ([email protected])
https://github.com/emelianov/modbus-esp8266
modified 13 May 2020
by brainelectronics
This code is licensed under the BSD New License. See LICENSE.txt for more info.
*/
// #include <ModbusRTU.h>
// #define REGN 10
// #define SLAVE_ID 1
// #define LED_Pin 23
// ModbusRTU mb;
// void setup() {
// pinMode(LED_Pin, OUTPUT);
// Serial.begin(9600, SERIAL_8N1);
// #if defined(ESP32) || defined(ESP8266)
// mb.begin(&Serial);
// #else
// mb.begin(&Serial);
// //mb.begin(&Serial, RXTX_PIN); //or use RX/TX direction control pin (if required)
// mb.setBaudrate(9600);
// #endif
// mb.slave(SLAVE_ID);
// mb.addHreg(REGN);
// mb.Hreg(REGN, 100);
// }
// void loop() {
// mb.task();
// yield();
// }