Skip to content

Instantly share code, notes, and snippets.

@isagalaev isagalaev/temperatures.py Secret
Created Feb 15, 2017

Embed
What would you like to do?
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
You can’t perform that action at this time.