Я использую gpiozero
для управления устройствами на Raspberry Pi.Когда я создаю ссылку на (например) светодиодное устройство, есть параметр для создания объекта без изменения его текущего состояния: initial_state=None
.(По умолчанию initial_state=False
, что автоматически отключает значение при создании эталонного объекта). Проблема в том, что всегда кажется, что при выходе из скрипта аппаратный вывод сбрасывается (хотя, как ни странно, это не является внутренним «состоянием»).Что еще хуже, когда я снова запускаю скрипт, он знает состояние, в котором я его оставил, и возвращает физический вывод в это состояние!
Вот моя программа включения / выключения перемычек, теперь у нее есть пауза,в течение которого состояние остается неизменным, но при выходе из программы контакты сбрасываются.(Хотя, как я упоминал выше, состояние «запоминается»)
#!/usr/bin/env python
from __future__ import print_function
import sys
import time
from gpiozero import LED
jump1=LED(17,initial_value=None)
jump2=LED(27,initial_value=None)
if len(sys.argv)>1:
print ("Jumper were: (%s,%s)"%(str(jump1.is_active),str(jump2.is_active)))
if sys.argv[1].lower() == 'on':
jump1.on()
jump2.on()
print ('turned both on')
elif sys.argv[1].lower() == 'off':
jump1.off()
jump2.off()
print ('turned both off')
print ("Jumper Currently: (%s,%s)"%(str(jump1.is_active),str(jump2.is_active)))
raw_input("Press enter to exit.")
Кто-нибудь знает способ сказать gpiozero
, что аппаратное средство остается после выхода один? Этот вопрос подробно описывает похожую проблему, хотя и с другим модулем.
(Правка: оказывается, модуль gpiozero меняет направление вывода на вход, но не меняет выходную защелку, котораякак он возвращает старое состояние, когда направление вывода меняется на выход.)