diff --git a/main.py b/main.py index a182e91..f46bd43 100644 --- a/main.py +++ b/main.py @@ -26,13 +26,8 @@ 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 +last_tt = 0 # make this array size 20. A morse char of 5 dots|dashes # would take up 10 slots max. # @@ -47,106 +42,59 @@ class buttonEvent: #def str(self): #return "mstimestamp:",str(mstimestamp), "pinst ",str(pinstate) -# 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 # print("button B pressed", buttonB) def ButtonB_f_IRQHandler(pin): - #now = time.now() - global buttonB, last_pv - global mbuf, mindex, mcount, mmaxindex + global last_pv, last_tt pv = pin.value() tt = time.ticks_ms() - buttonB = 2*60 # maKES leds LIGHT IN AIRq 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: 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 - mindex += 1 - mindex = mindex % mmaxindex - if pv: - beeper.playTone(600) - else: - beeper.stopTone() + d = tt - last_tt + if pv: + print(" duration of inter-m space ", d) + beeper.playTone(600) + else: + print(" duration of press ", d) + if d > 300: + print ("DAH") + else: + print ("DIT") + beeper.stopTone() last_pv = pv + last_tt = tt # FALLING DOES NOT WORK AND IRQ_LOW_LEVEL not recognised 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) - -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 + #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("(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, "@ 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 - duration = b2.mstimestamp - b1.mstimestamp - if duration < 300: - oled.displayText('dit '+str(duration), 5, 33) - else: - oled.displayText('dah '+str(duration), 5, 33) - mindex_t += 2; - mindex_t = mindex_t % mmaxindex - mcount -= 2 - else: - print(" undefined pinstate order", b1.pinstate, b2.pinstate) - mindex_t += 1 # that one made no sense so move up - mindex_t = mindex_t % mmaxindex - mcount -= 1 - oled.displayText('BAH ', 5, 33) - old_m_count = mcount + #oled.displayText(str(mcount), 4, 33) 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) + process_morse() + ##process_morse2() + #time.sleep(1.0) \ No newline at end of file