62 lines
1.6 KiB
C++
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|