import machine from machine import Pin, ADC import DS18B20 as dsb import time import ne555 as ne import math import display import sys import network as net def dane(vpr='Potrdi(d/n)->'): str=input(vpr) if str=='d': return True else: return False try: display.init() from display import oled except: print('Napaka OLED!') if dane('Resetiram(d/n)->'): machine.reset() oled.text('OLED deluje!',0,0) oled.show() #Offline firmware za Vremensko postajo PTIT FE 2017 try: svet=ADC(0) #svetloba pin12=tipka=Pin(12, Pin.IN, Pin.PULL_UP) #tipka pin13=statusled=Pin(13, Pin.OUT) #status LED pin15=alertled=Pin(15, Pin.OUT ) #alert LED except: print('Napaka I/O!') if dane('Resetiram(d/n)->'): machine.reset() oled.text('I/O postavljen!',0,10) oled.show() try: dsb.setup(0) except: print('Napaka Temp. senzorja!') if dane('Resetiram(d/n)->'): machine.reset() oled.text('TS postavljen!',0,20) oled.show() time.sleep(1) oled.fill(0) oled.text('<-------------->', 0, 15) oled.text('', 0, 25) oled.text('<-------------->', 0, 35) oled.text(' !Pozdravljeni! ', 0, 50) oled.show() time.sleep_ms(750) oled.fill(0) oled.text('Tipka menja',0,0) oled.text('casovne razmike',0,10) oled.text('med meritvami',0,20) oled.text('0.25/0.5/1/2/10s',0,30) oled.text('7x tipka=izhod',0,40) oled.show() time.sleep(4) oled.fill(0) oled.show() statusled.value(1) alertled.value(0) sleeptime=15 count=0 vlaga=0 temp=0 svetloba=0 ms=sleeptime*1000 exitf=0 def exit(): oled.fill(0) oled.text('<-------------->', 0, 15) oled.text('', 0, 25) oled.text('<-------------->', 0, 35) oled.text(' !Nasvidenje! ', 0, 50) oled.show() time.sleep(1.5) oled.fill(0) oled.show() oled.poweroff() def updatescreen(): global vlaga, temp, svetloba, sleeptime oled.fill(0) oled.text('T: ' + str(temp) + 'C',15,10) oled.text('S: ' + str(svetloba) + ' enot',15,20) oled.text('RH: ' + str(vlaga) +' Hz', 15, 30) oled.text('NodeMCU Senzor',0,0) oled.text('Uptime: ' + str(time.time()) + 's',5,45) oled.text('S: ' + str(ms/1000) + 's',0,55) oled.show() active=0 def carefulsleep(): startticks=time.ticks_ms() global ms, active, lasttick, firsttick, exitf while time.ticks_diff(time.ticks_ms(), startticks) < ms: updatescreen() if not tipka.value(): if firsttick==0: active=1 firsttick=time.ticks_ms() lasttick=time.ticks_ms() if time.ticks_diff(lasttick, firsttick) > 3000 and active==1: #print('ttt') exitf=3 active=0 exit() if time.ticks_diff(time.ticks_ms(), lasttick) > 60 and active==1: #print("BING!") lasttick=0 firsttick=0 active=0 setsleep() #print(lasttick, firsttick,time.ticks_diff(lasttick, firsttick)) def setsleep(): global ms sleeptime=ms/1000 if sleeptime==15: sleeptime=0.25 elif sleeptime==0.25: sleeptime=0.5 elif sleeptime==0.5: sleeptime=1 elif sleeptime==1: sleeptime=2 elif sleeptime==2: sleeptime=15 else: sleeptime=15 time.sleep_ms(15) ms=sleeptime*1000 #print('set to', sleeptime) updatescreen() #tipka.irq(trigger=Pin.IRQ_FALLING, handler=setsleep) def acq(): oled.text('BUSY...',70,55) alertled.value(1) oled.show() global temp, vlaga, svetloba try: temp=dsb.read_temp() except: print('Napaka v branju temperature!') temp='NAPAKA' try: svetloba=svet.read() except: print('Napaka v branju svetlobe!') svetloba='NAPAKA' try: vlaga=ne.main() except: print('Napaka v branju vlage!') vlaga='NAPAKA' alertled.value(0) lasttick=0 firsttick=0 while exitf<1: acq() updatescreen() carefulsleep()