Надеюсь молодой боец переведёт человеческий язык на язык Си и мы допишем к этому устройству протокол MySensors. Если нет придётся самому написать

Код: Выделить всё
#define MY_TRANSPORT_WAIT_READY_MS 1000
#define MY_RADIO_RF24
#include <MySensors.h>
Код: Выделить всё
MyMessage msg1(0, V_STATUS);
MyMessage msg2(1, V_STATUS);
Код: Выделить всё
void presentation()
{
sendSketchInfo("Relay+Button", "1.0");
present(0, S_BINARY,"Relay1");
present(1, S_BINARY,"Relay2");
}
Код: Выделить всё
void loop(){
ваш код;
send(msg1.set(статус1));
...;
send(msg2.set(статус2));
Код: Выделить всё
void receive(const MyMessage &message){
if ((message.type == V_STATUS)&&(message.sensor == 0)) статус1 = message.getBool();
if ((message.type == V_STATUS)&&(message.sensor == 1)) статус2 = message.getBool();
}
На языке Си это выглядит следующим образом:Mikhail72 писал(а): ↑30 янв 2018, 05:53 На человеческом языке это звучит так: Считываем состояние кнопки, если кнопка нажата, то меняем состояние булевой переменной, например, статус1 на противоположное и записываем его на выход к которому подключено реле, тоже самое со второй кнопкой и переменной статус2.
Код: Выделить всё
bool state1 = 0; // Объявляем переменные
bool state2 = 0; // статус1 и статус2
void setup()
{
pinMode(2, INPUT_PULLUP); // Пин2 вход с подтяжкой (Кнопка1)
pinMode(3, INPUT_PULLUP); // Пин3 вход с подтяжкой (Кнопка2)
pinMode(4, OUTPUT); // Пин4 выход (Реле1)
pinMode(5, OUTPUT); // Пин5 выход (Реле2)
}
void loop()
{
if ((digitalRead (2)) == 0) { // Если нажата кнопка1
state1 = !(state1); // Инвертируем переменную
}
if ((digitalRead (3)) == 0) { // Если нажата кнопка2
state2 = !(state2); // Инвертируем переменную
}
digitalWrite(4, state1); // Записываем значение переменных
digitalWrite(5, state2); // статус1 и статус2 на выходы
}
Код: Выделить всё
// Флаги конфигурации
#define MY_TRANSPORT_WAIT_READY_MS 1000 // Запуск без сети MyS
#define MY_RADIO_RF24 // Радио
//#define MY_DEBUG // Дебаг
//#define MY_NODE_ID 1 // Номер ноды
#include <MySensors.h> // Подключаем библиотеку
bool state1 = 0; // Объявляем переменные
bool state2 = 0; // статус1 и статус2
MyMessage msg1(0, V_STATUS); // Создаём контейнеры
MyMessage msg2(1, V_STATUS);
void presentation()
{
sendSketchInfo("Relay+Button", "1.0");
present(0, S_BINARY,"Relay1");
present(1, S_BINARY,"Relay2");
}
void setup()
{
pinMode(2, INPUT_PULLUP); // Пин2 вход с подтяжкой (Кнопка1)
pinMode(3, INPUT_PULLUP); // Пин3 вход с подтяжкой (Кнопка2)
pinMode(4, OUTPUT); // Пин4 выход (Реле1)
pinMode(5, OUTPUT); // Пин5 выход (Реле2)
}
void loop()
{
if ((digitalRead (2)) == 0) { // Если нажата кнопка1
state1 = !(state1); // Инвертируем переменную
send(msg1.set(state1)); // Отправляем состояние реле1 на контроллер
}
if ((digitalRead (3)) == 0) { // Если нажата кнопка2
state2 = !(state2); // Инвертируем переменную
send(msg1.set(state2)); // Отправляем состояние реле1 на контроллер
}
digitalWrite(4, state1); // Записываем значение переменных
digitalWrite(5, state2); // статус1 и статус2 на выходы
}
void receive(const MyMessage &message){
// Если пришло сообщение для сенсора 0, записываем его в переменную статус1
if ((message.type == V_STATUS)&&(message.sensor == 0)) state1 = message.getBool();
// Если пришло сообщение для сенсора 1, записываем его в переменную статус2
if ((message.type == V_STATUS)&&(message.sensor == 1)) state2 = message.getBool();
}