Tengo un código para leer datos analógicos y lo imprimo como digital (ON, OFF). Cuando el estado está ENCENDIDO, veo múltiples ENCENDIDOS en la pantalla; También cuando está APAGADO, veo múltiples APAGADOS en la pantalla. Después de leer, transmitiré datos a las hojas de cálculo de Google. Entonces solo necesito transferir cuando el estado cambia. Discutí algunos temas aquí pero no encontré exactamente lo que quería. Si encuentro una solución, creo que sería útil para las personas.

Aquí está mi código:

 while True:
  if sensor > 1.60:
   Status = 'ON'
  else:
   Status = 'OFF'

  print("Status : {}".format(Status))

Intenté el comando break debajo de Status = 'ON' pero no fue una buena solución.

1
coskukoz 13 may. 2016 a las 10:08

3 respuestas

La mejor respuesta

Como solicitó, esto es lo que estaba sugiriendo. Es muy similar a lo que otros han publicado, excepto que aquí he mostrado explícitamente la inicialización y el ciclo. Lo único que falta es el código que actualiza sensor.

prev_Status = None

while True:
    if sensor > 1.60:
        Status = 'ON'
    else:
        Status = 'OFF'

    if Status != prev_Status:
        print("Status : {}".format(Status))
        prev_Status = Status
1
Tom Karzes 13 may. 2016 a las 08:57

Simplemente agregue otra variable que se actualice y haga referencia cada vez que se verifique la entrada.

if sensor > 1.60 and previous_status == 'OFF:
  Status = 'ON'
  previous_status = 'ON'
elif sensor <= 1.60 and previous_status == 'ON':
  Status = 'OFF'
  previous_status = 'OFF'

Espero que esto ayude.

0
Ethen Crowl 13 may. 2016 a las 13:37

Prueba esto tal vez? necesita inicializar preStatus = 'ON' al principio

if sensor > 1.60:
   Status = 'ON'
else:
   Status = 'OFF'

if preStatus!=Status:
   print("Status : {}".format(Status))
   preStatus=Status
1
cheng chen 13 may. 2016 a las 07:37