diff --git a/main.py b/main.py index 2592ee8..a182e91 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,5 @@ -# A weather station program display the date, time, temperature and humidity on the OLED screen with Air Quality and eCO2 on ZIP LEDs (Red/Green) +# morse code analyser from PicoAirQuality import KitronikBME688, KitronikButton, KitronikDataLogger, \ KitronikOLED, KitronikRTC, KitronikZIPLEDs,\ KitronikBuzzer @@ -26,27 +26,35 @@ sec = 0 beeper = KitronikBuzzer() buttons = KitronikButton() - +mmaxindex = 20 +mbuf = [] # array/list(buttonEvent) this should be global by default RIGGHT???? +mindex = 0 # head new button events +mindex_t = 0 # tail unprocessed button events +mcount = 0 +old_m_count = 0 +last_pv = 0 # make this array size 20. A morse char of 5 dots|dashes # would take up 10 slots max. # + class buttonEvent: - mstimestamp = 0 - pinstate = 0 + #mstimestamp = 0 + #pinstate = 0 def __init__(self, mststamp, pinst): buttonEvent.mstimestamp = mststamp buttonEvent.pinstate = pinst #def str(self): #return "mstimestamp:",str(mstimestamp), "pinst ",str(pinstate) -mmaxindex = 20 -mbuf = [] # array(buttonEvent) -mindex = 0 # head new button events -mindex_t = 0 # tail unprocessed button events -mcount = 0 -old_m_count = 0 -last_pv = 0 +# this pythin list is doing my head in, why cant they just ahve arrays like normal langauages +# +for i in range (0,30): + b = buttonEvent(0,0) + print (" inserting a dummy entry into the stupid list object ", i) + mbuf.insert(i,b) + print (" how can it xcomplaIN NOW THE LIST IS FULL OF OBJECTS ",) + #def ButtonB_r_IRQHandler(pin): # global buttonB # buttonB = 2*60 @@ -55,18 +63,20 @@ last_pv = 0 def ButtonB_f_IRQHandler(pin): #now = time.now() global buttonB, last_pv - global mbuff, mindex, mcount, mmaxindex + global mbuf, mindex, mcount, mmaxindex pv = pin.value() + tt = time.ticks_ms() buttonB = 2*60 # maKES leds LIGHT IN AIRq - print("button B IRQ", time.ticks_ms(), pv) - if last_pv == 0 and pin.value() == 0: # get get spurious 0 level ints - print("two zero ints low level in a row") # ignore + print("button B IRQ", tt, pv) + if last_pv == pv : # get get spurious 0 level ints + print("two ints @ same level in a row",pv) # ignore else: - bollocks=buttonEvent(time.ticks_ms(),pv) - mbuf.insert(mindex,bollocks) - print ("bollocks", str(bollocks.mstimestamp), str(bollocks.pinstate)) # arghhh why is it not storing thsi - print ("mbuf inserting ",str( time.ticks_ms()), str(pv), "@", str(mindex)) - b3 = mbuf[mindex] + b=buttonEvent(time.ticks_ms(),pv) + # no no no!!! mbuf.insert(mindex,b) + mbuf[mindex] = b # why cant i do this arrrgghhhnhhh all I want is a fucking array + print ("b", str(b.mstimestamp), str(b.pinstate)) # arghhh why is it not storing thsi + print ("mbuf inserting ",str( time.ticks_ms()), str(pv), "@", str(mindex), mbuf) + b3 = mbuf[mindex] # shit bag that should store it print ("did shit bag python actually put this in the list??", b3.pinstate, b3) # it would appear the shitbag python did store this mcount += 1 @@ -83,23 +93,35 @@ def ButtonB_f_IRQHandler(pin): buttons.buttonB.irq(trigger=machine.Pin.IRQ_FALLING|machine.Pin.IRQ_RISING, handler=ButtonB_f_IRQHandler) #buttons.buttonB.irq(trigger=machine.Pin.IRQ_RISING, handler=ButtonB_r_IRQHandler) -while True: - #global old_m_count + +def process_morse2(): + # ok the mbuf is driving me bonkers. keeps going local or something + global mbuf + for i in range (0,mmaxindex-1): + be = mbuf[i] + print ("be ", i, be.mstimestamp, be.pinstate ) + +def process_morse(): + #global mbuf # : why python WHY: why muck everyone about with local fucking copies your sxdjhklazsedfbokhjlfvbegrhjk + global mbuf, mindex, mindex_t, mcount, mmaxindex, oled, old_m_count + #for i in range (0,mmaxindex-1): + #be = mbuf[i] + #print ("be ", be.timestampms, be.pinstate ) oled.clear() oled.displayText(rtc.readDateString(), 1, 25) oled.displayText(rtc.readTimeString(), 2, 33) oled.displayText(str(mcount), 4, 33) # process the list if (mcount - old_m_count) >= 2: - print(" old_m_count != mcount >= 2") - b1 = mbuf[(mindex_t+mmaxindex)%mmaxindex] + print("(mcount - old_m_count) >= 2", mbuf, " mindex_t ", mindex_t) + b1 = mbuf[(mindex_t)%mmaxindex] b2 = mbuf[(mindex_t+1)%mmaxindex] # ok shitbag python why is the pinstate in that object now zero you turd #print("b1 index", str((mindex_t+mmaxindex)%mmaxindex), "b1 ps", str(b1.pinstate)) #print("b2 index", str((mindex_t+mmaxindex+1)%mmaxindex), "b2 ps ", str(b2.pinstate)) - print("b1", b1, b1.pinstate) - print("b2", b2, b2.pinstate) - print(" b1 ps, b2 ps", b1.pinstate, b2.pinstate) + print("b1", b1, b1.pinstate, "@ mbuf[", str((mindex_t+mmaxindex)%mmaxindex), "]") + print("b2", b2, b2.pinstate, "@ mbuf[", str((mindex_t+1)%mmaxindex), "]") + print(" b1 ts ps ", b1.mstimestamp, b1.pinstate, "b2 ts ps", b2.mstimestamp, b2.pinstate) if b1.pinstate == 1 and b2.pinstate == 0: print(" high to low pinstate valid press", b1.pinstate, b2.pinstate) # press and release found @@ -118,4 +140,13 @@ while True: mcount -= 1 oled.displayText('BAH ', 5, 33) old_m_count = mcount - oled.show() \ No newline at end of file + oled.show() + + + +while True: + # maybe a function can have a global ref, yeah maybe the main cont. another wanky aspect ogf pythion + #process_morse() + process_morse2() + time.sleep(1.0) + \ No newline at end of file