Вы устанавливаете t_end
равным time.time() + 20
перед своим внешним циклом while, и никогда не обновляете его после этого, так что через 20 секунд и time.time()
станет равным, а затем большим, чем t_end
, код в вашем внутреннем while time.time() < t_end
цикле while никогда больше не будет выполняться.
Поскольку два оператора sleep(.5)
в этом коде
while time.time() < t_end:
GPIO.output(6, GPIO.HIGH)
sleep(.5)
GPIO.output(6, GPIO.LOW)
sleep(.5)
означают, что каждый цикл мигания занимает одну секунду из-за того, что светодиод включен на полсекунды и выключен на полсекундыпочему бы просто не заменить while time.time() < t_end:
на for i in range(20):
, и тогда вы получите 20 секунд мигания без необходимости работать с какой-либо дополнительной переменной времени.