Програмирования arduino (RF пульт, RF приёмник, LED ленты, RCSwitch). Почему медленно переключается с циклов?
А что происходит при отсутствии сигнала?
Как вариант примерно следующее:
Добавить внутрь цикла проверку условия. Алгоритм примерно такой:
Перед запуском цикла фиксируем код, по которому попали на условие.
В цикле периодически читаем код с приемника (например каждые 10 проходов цикла).
Если новый считанный код отличен от того, по которому попали в цикл (а также от того, что возвращается при отсутствии сигнала), то делаем break для досрочного выхода из цикла.
 там есть немного лишнего, но сейчас нету особой надобности убирать 
У вас daeay стоит в цикле. Это вешает ваш контроллер. Вам надо освоить таймер.
В целом вам надо одновременно, а вы все последовательно напихали. 
Самое простое, в  функции loop вы должны читать кнопку и запускать один шаг цикла переключения. То есть сделать один внешний for, и уже внутри делать логику.