Skip to content

Instantly share code, notes, and snippets.

@isagalaev
Created February 15, 2017 21:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isagalaev/5da186caaa83db59b1e34a6e7937874b to your computer and use it in GitHub Desktop.
Save isagalaev/5da186caaa83db59b1e34a6e7937874b to your computer and use it in GitHub Desktop.
if (tempCPU > tempMAX) or (tempGPU > tempMAX):
GPIO.output (pioFANc, GPIO.HIGH) # если выше максимальной, то включить светодиод "мне жарко"
GPIO.output (pioFANl, GPIO.HIGH) # и вентилятор включить тоже
if (tempCPU < tempMIN) or (tempGPU < tempMIN):
GPIO.output (pioFANc, GPIO.LOW) # если ниже минимальной, то выключить светодиод "мне жарко"
GPIO.output (pioFANl, GPIO.LOW) # и вентилятор выключить тоже
# Вот это не выглядит правильно. Сразу по нескольким причинам:
#
# - Если одна из температур сначала превысила максимум, а потом опустилась ниже максимума, то
# лампочка не погаснет. И, возможно, не покаснет никогда, потому что температуре не с чего
# опускаться ниже минимума.
#
# - Если одна из температур больше максимума, а *другая* ниже минимума, то лампочка не загорится,
# потому что второе условие её тут же погасит.
#
# - Случай с == максимуму тоже никак не рассмотрен.
# По логике это должно выглядеть как-то так:
overheat = tempCPU > tempMAX or tempGPU > tempMAX
signal = GPIO.HIGH if overheat else GPIO.LOW
GPIO.output(pioFANc, signal)
GPIO.output(pioFANl, signal)
# или даже так:
overheat = any(t > tempMAX for t in [tempGPU, tempCPU])
for pin in [pioFANc, pioFANl]:
GPIO.output(pin, GPIO.HIGH if overheat else GPIO.LOW)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment