Podobné věci se většinou řeší stavovým automatem (state machine; google ti určitě ukáže spoustu teorie).
Jinak ohřívače mají většinou hysterezi: teplota při které se ohřívač spustí je vyšší než při které se vypne. Přikládám jednoduchou ukázku. 2014-04-21 21:02 GMT+02:00 Lukáš Sliacky <lu...@sliacky.eu>: > Ahojte, > > už druhý deň si lámem hlavu nad tým, ako urobiť, aby v cykle nastala akcia > iba pri prekročení definovanej hodnoty. > > Príklad: > Mám teplomer, ktorý dáva na vstup teplotu v stupňoch. Chcem, aby cyklus > sledoval, či je teplota vyššia alebo nižšia ako 20 stupňov a podľa toho > vykonal napr. print. > Problém je v tom, že potrebujem aby print vykonal iba keď teplota stúpne nad > 20 stupňov, resp. keď klesne pod 20 stupňov. Keď stúpne napr. z 15 na 16 > alebo z 21 na 22, nevykoná sa nič. Jednoducho akcia iba keď sa prvý krát > prekoná definovaná hodnota. > > Je to vlastne ekvivalent funkcie nejakého ohrievača. Keď teplota klesne pod > 20 stupňov, vypíše, že za zapína kúrenie a zapne ho až pokým teplota nestúpne > nad 20, tam znovu vypíše, že teplota je nad 20 a znovu nebude vykonávať nič, > až pokým neklesne pod 20. > (ak som to náhodou nezadefinoval dostatočne, na požiadanie to všetko upresním) > > Verím, že existuje nejaký hotový algoritmus, ale ani po hodinách googlenia sa > mi nepodarilo nájsť nič použiteľné. > > Ďakujem za odpovede. > > Lukáš > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz
def prechod(stav, hodnota): if stav == 'vypnuto': if hodnota < 18: print('zapinam') return 'zapnuto' else: return stav elif stav == 'zapnuto': if hodnota > 20: print('vypinam') return 'vypnuto' else: return stav else: raise ValueError(stav) def ukazka(): stav = 'vypnuto' for hodnota in [20, 18, 17, 16, 10, 19, 20, 18, 22, 24]: print('Hodnota:', hodnota) stav = prechod(stav, hodnota) ukazka()
_______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz