Я пытаюсь зачитать 5 микровыключателей в LuvitRED (другая форма красного узла).Чтобы быть полезной в остальной части программы, 5 датчиков должны объединиться в 1 целое число.
Изображение выше - схема расположения узла-красный.Сначала я собирался преобразовать каждый вход в отдельную функцию.В нижней части показана вторая идея, где все микропереключатели считываются и суммируются в 1 функции.
Идея:
- Микропереключатель 1 = 1 (когда активен)
- Микропереключатель 2 = 10
- Микропереключатель 3 = 100 и т. Д.
Таким образом, когда я их всех суммирую, конечное число будет между 00000
и 11111
в зависимости от того, какие из них активны и облегчают распознавание того, какие микропереключатели активны.
В нижней части изображения используются простые кнопки, которые при нажатии нажимают msg.payload = 1
для быстрого тестирования.Ниже приведен код этой функции.
Я гуглил об этой проблеме, и многие форумы утверждали, что использование функции изменения (для изменения от 1 до 10 и более) в сочетании с функцией соединенияРабота.К сожалению, в LuvitRED нет функции соединения, потому что это измененная версия Node-RED.
if not msg then
-- called on startup
return
end
flow.microswitch1 = 0;
flow.microswitch2 = 0;
flow.microswitch3 = 0;
flow.microswitch4 = 0;
flow.microswitch5 = 0;
if (msg.topic == 'microswitch1') then
flow.microswitch1 = msg.payload;
elseif (msg.topic == 'microswitch2') then
flow.microswitch2 = msg.payload * 10;
elseif (msg.topic == 'microswitch3') then
flow.microswitch3 = msg.payload * 100;
elseif (msg.topic == 'microswitch4') then
flow.microswitch4 = msg.payload * 1000;
elseif (msg.topic == 'microswitch5') then
flow.microswitch5 = msg.payload * 10000;
end
global.availableSpaces = flow.microswitch1 + flow.microswitch2 +
flow.microswitch3 + flow.microswitch4 + flow.microswitch5
msg.payload = global.availableSpaces
return msg
Я ожидал, что это сработает, поскольку сейчас я работаю только с кнопками, чтовсегда отправлять 1 msg.payload при нажатии.Однако по какой-то причине я получаю ошибку ввода при нажатии кнопок без какого-либо результата в отладчике.У всех вас есть идеи относительно того, как я могу решить эту проблему?