Всем привет. Для управления люстрой от пульта ДУ использую код Код (Text): if ((results.value == 0x36) || (results.value == 0x10036)) { mySwitch.send(7652200,24); } , т.е. 1 раз нажал - включилась, 2-й раз нажал - выключилась. Но так работает только 1 единственная группа кнопок. Как реализовать управление еще 1 группой лампочек, т.е: 1 - 1 включаем 4 лампы -команда посылки 0x36 || 0x10036 команда отправки mySwitch.send(7652200,24); 2- если снова нажали, то выключается люстра, 3- если снова нажали, то включились 3 лампы , другие команда посылки 0x36 || 0x10036 команда отправки mySwitch.send(7652550,24); 4 - если снова нажали, то выключается люстра 5- включаем все лампы - команда посылки 0x36 || 0x10036, команда отправки mySwitch.send(7652200,24); и mySwitch.send(7652550,24); 6 - выключаем люстру Далее по новой Можно хотя бы толкнуть в алгоритм, а то пока не соображу через, if или case или while такое реализовать. Спасибо
Вот набросал. Код (Text): int flag=0; if ((results.value == 0x36) || (results.value == 0x10036) && flag==0) { mySwitch.send(7652200,24); // 1 включаем 4 лампы -команда посылки 0x36 || 0x10036 команда отправки mySwitch.send(7652200,24); flag = 1; } if ((results.value == 0x36) || (results.value == 0x10036) && flag==1) { mySwitch.send(7652200,24); // если снова нажали, то выключается люстра, flag =2; } if ((results.value == 0x36) || (results.value == 0x10036) && flag==2) { mySwitch.send(7652550,24); // если снова нажали, то включились 3 лампы , другие команда посылки 0x36 || 0x10036 команда отправки mySwitch.send(7652550,24); flag =3; } if ((results.value == 0x36) || (results.value == 0x10036) && flag==3) { mySwitch.send(7652550,24); // если снова нажали, то выключается люстра flag =4; } if ((results.value == 0x36) || (results.value == 0x10036) && flag==4) { mySwitch.send(7652200,24); delay(100); mySwitch.send(7652550,24); // включаем все лампы - команда посылки 0x36 || 0x10036, команда отправки mySwitch.send(7652200,24); и mySwitch.send(7652550,24); flag = 5; } if ((results.value == 0x36) || (results.value == 0x10036) && flag==6) { mySwitch.send(7652200,24); delay(100); mySwitch.send(7652550,24); // Выключаем люстру flag = 0; } Еще к сожалению не проверял, но правильно или все таки нет?
Код (C++): int flag=0; if ((results.value == 0x36) || (results.value == 0x10036)) { if ( (flag == 0) || (flag == 1)) mySwitch.send(7652200,24); else if ( (flag == 2) || (flag == 3)) mySwitch.send(7652550,24); else if ( (flag == 4) || (flag == 5)) { mySwitch.send(7652200,24); delay(100); mySwitch.send(7652550,24); } if (++flag == 6) flag =0; }
я только переписал Ваш код покороче. А по смыслу он идентичен предыдущему. так что за правильность команд отвечаете Вы сами
Вот еще 1 код накидал. Не знаю заработает или нет. Код (Text): int n=1; void setup() { инициализация } void loop() { if ((results.value == 0x36) || (results.value == 0x10036)) { delay(1000); ++n; if (n>6) n=1; } switch(n) { case 1: mySwitch.send(7652200,24); break; case 2: mySwitch.send(7652200,24); break; case 3: mySwitch.send(7652550,24); break; case 4: mySwitch.send(7652550,24); break; case 5: mySwitch.send(7652200,24); mySwitch.send(7652550,24); break; case 6: mySwitch.send(7652200,24); mySwitch.send(7652550,24); break; } }