Вопрос остается в силе: нужно считать данные из ячеек с адресами 4 и 5. Где их указывать?
Вот сам скетч:
Код: Выделить всё
#include <SimpleModbusMaster.h>
#include <Arduino.h>
#include <Wire.h>
#include <MicroLCD.h>
LCD_SSD1306 lcd;
// Настройки интерфейса
#define baud 9600 // Скорость
#define timeout 1000 // Длительность ожидание ответа
#define polling 200 // Длительность паузы между запросами
#define retry_count 10 // Количество попыток обмена до отключения канала
// Выход контроллера для управления направлением драйвера
#define TxEnablePin 2
// Выход для управления светодиодом
#define LED 13
// Количество регистров на стороне ведущего устройства для хранения данных
#define TOTAL_NO_OF_REGISTERS 1
// Простой способ подсчета количтества создаваемых объектов packet.
// TOTAL_NO_OF_PACKETS обновляется автоматически.
enum
{
PACKET1,
TOTAL_NO_OF_PACKETS // Этот элемент должен быть последним
};
Packet packets[TOTAL_NO_OF_PACKETS];
unsigned int regs[TOTAL_NO_OF_REGISTERS];
void setup()
{
// Инициализируем каждый обект packet
modbus_construct(&packets[PACKET1], 0, READ_HOLDING_REGISTERS, 0, 1, 0);
// Инициализируем конечный автомат протокола MODBUS
modbus_configure(&Serial, baud, SERIAL_8N1, timeout, polling, retry_count, TxEnablePin, packets, TOTAL_NO_OF_PACKETS, regs);
// Инициализируем последовательный порт для отладочного вывода
lcd.begin();
// Настраиваем порт для светодиода
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
void loop()
{
modbus_update();
lcd.setFont(FONT_SIZE_MEDIUM);
lcd.setCursor(0, 0); lcd.print("MODBUS RTU");
lcd.setCursor(0, 2);lcd.print(regs[0]);
}