DN23E08_modbus/DN23E08/discrete_inputs.cpp

62 lines
1.6 KiB
C++

#include "discrete_inputs.h"
ShiftInRegisterUnion shiftInRegister;
Keys keys;
DiscreteInputs discreteInputs;
void setupDiscreteInputs(ModbusSerial& mb) {
pinMode(KEY_1_PIN, INPUT_PULLUP);
pinMode(KEY_2_PIN, INPUT_PULLUP);
pinMode(KEY_3_PIN, INPUT_PULLUP);
pinMode(KEY_4_PIN, INPUT_PULLUP);
pinMode(LOAD_PIN_165, OUTPUT);
pinMode(CLOCK_PIN_165, OUTPUT);
pinMode(DATA_PIN_165, INPUT);
for (size_t i = 0; i < DISCRETE_INPUT_COUNT; i++)
mb.addIsts(i);
}
void discreteInputsTask(ModbusSerial& mb) {
keys.KEY_1 = !digitalRead(KEY_1_PIN);
keys.KEY_2 = !digitalRead(KEY_2_PIN);
keys.KEY_3 = !digitalRead(KEY_3_PIN);
keys.KEY_4 = !digitalRead(KEY_4_PIN);
digitalWrite(CLOCK_PIN_165, HIGH);
digitalWrite(LOAD_PIN_165, LOW);
digitalWrite(LOAD_PIN_165, HIGH);
shiftInRegister.byte = shiftIn(DATA_PIN_165, CLOCK_PIN_165, MSBFIRST) ^ 0XFF;
discreteInputs.digitalInputs = shiftInRegister.shiftInRegister;
discreteInputs.keys = keys;
mb.setIsts(0, discreteInputs.digitalInputs.INPUT1);
mb.setIsts(1, discreteInputs.digitalInputs.INPUT2);
mb.setIsts(2, discreteInputs.digitalInputs.INPUT3);
mb.setIsts(3, discreteInputs.digitalInputs.INPUT4);
mb.setIsts(4, discreteInputs.digitalInputs.INPUT5);
mb.setIsts(5, discreteInputs.digitalInputs.INPUT6);
mb.setIsts(6, discreteInputs.digitalInputs.INPUT7);
mb.setIsts(7, discreteInputs.digitalInputs.INPUT8);
mb.setIsts(8, discreteInputs.keys.KEY_1);
mb.setIsts(9, discreteInputs.keys.KEY_2);
mb.setIsts(10, discreteInputs.keys.KEY_3);
mb.setIsts(11, discreteInputs.keys.KEY_4);
}