Мой Скетч
- Code: [Выделить всё] [Expand/Collapse]
- #include <SimpleModbusSlave.h>
- #define LED 9
- /
- //////////////// Регистры вашего slave ///////////////////
- enum
- {
- // just add or remove registers and your good to go...
- // The first register starts at address 0
- ADC_VAL,
- PWM_VAL,
- HOLDING_REGS_SIZE // leave this one
- // total number of registers for function 3 and 16 share the same register array
- // i.e. the same address space
- };
- unsigned int holdingRegs[HOLDING_REGS_SIZE];
- void setup()
- {
- /* parameters(HardwareSerial* SerialPort,
- long baudrate,
- unsigned char byteFormat,
- unsigned char ID,
- unsigned char transmit enable pin,
- unsigned int holding registers size,
- unsigned int* holding register array)
- */
- /* Valid modbus byte formats are:
- SERIAL_8N2: 1 start bit, 8 data bits, 2 stop bits
- SERIAL_8E1: 1 start bit, 8 data bits, 1 Even parity bit, 1 stop bit
- SERIAL_8O1: 1 start bit, 8 data bits, 1 Odd parity bit, 1 stop bit
- */
- modbus_configure(&Serial, 19200, SERIAL_8N2, 1, 2, HOLDING_REGS_SIZE, holdingRegs);
- // modbus_update_comms(baud, byteFormat, id) is not needed but allows for easy update of the
- // port variables and slave id dynamically in any function.
- modbus_update_comms(19200, SERIAL_8N2, 1);
- pinMode(LED, OUTPUT);
- }
- void loop()
- {
- // modbus_update() is the only method used in loop(). It returns the total error
- // count since the slave started. You don't have to use it but it's useful
- // for fault finding by the modbus master.
- modbus_update();
- holdingRegs[ADC_VAL] = analogRead(A0); // update data to be read by the master to adjust the PWM
- analogWrite(LED, holdingRegs[PWM_VAL]>>2); // constrain adc value from the arduino master to 255
- }
- GeSHi © Codebox Plus