Заранее хочу извиниться, если напишу чушь, нет времени проверить.
А что, если relay сделать глобальной переменной, и при нажатии на кнопку присвоить ей "0". Т.е. она динамически поменяется и цикл (теоретически
) должен удачно завершиться при проверке условия.