rotary works
This commit is contained in:
parent
6294807ed3
commit
1a2adbffdf
112
rotary.py
112
rotary.py
@ -1,78 +1,42 @@
|
|||||||
import time
|
def next_band():
|
||||||
from pigpio_encoder.rotary import Rotary
|
|
||||||
|
|
||||||
# Bands dict
|
|
||||||
bands = {
|
|
||||||
"80m":[3.5, 4],
|
|
||||||
"40m":[7, 7.3],
|
|
||||||
"20m":[14, 14.35],
|
|
||||||
"10m":[28, 29.7],
|
|
||||||
"2m":[144,146],
|
|
||||||
"70cm":[430,440]
|
|
||||||
}
|
|
||||||
|
|
||||||
# iterate over band
|
|
||||||
band = iter(bands)
|
|
||||||
CURRENT_BAND = None
|
|
||||||
|
|
||||||
def setup_encoder(ranges:list, scale:float=.25):
|
|
||||||
# make the minimum and maximum deviate by .1
|
|
||||||
minimum, maximum = ranges
|
|
||||||
minimum -= .1
|
|
||||||
maximum += .1
|
|
||||||
|
|
||||||
# prints current value
|
|
||||||
def rotary_callback(counter):
|
|
||||||
print("Counter value: ", round(counter, 2))
|
|
||||||
|
|
||||||
|
|
||||||
# init rotary
|
|
||||||
my_rotary = Rotary(
|
|
||||||
clk_gpio=17,
|
|
||||||
dt_gpio=27,
|
|
||||||
sw_gpio=22
|
|
||||||
)
|
|
||||||
|
|
||||||
# setup rotary
|
|
||||||
my_rotary.setup_rotary(
|
|
||||||
min=minimum,
|
|
||||||
max=maximum,
|
|
||||||
scale=scale,
|
|
||||||
debounce=300,
|
|
||||||
rotary_callback=rotary_callback
|
|
||||||
)
|
|
||||||
|
|
||||||
#my_rotary.watch()
|
|
||||||
return my_rotary
|
|
||||||
|
|
||||||
def change_band(plus:bool=False, minus:bool=False):
|
|
||||||
global CURRENT_BAND
|
global CURRENT_BAND
|
||||||
if plus:
|
|
||||||
# rollover positive next
|
|
||||||
CURRENT_BAND = next(band)
|
CURRENT_BAND = next(band)
|
||||||
if minus:
|
counter = bands[CURRENT_BAND][0]
|
||||||
|
print(counter)
|
||||||
|
print(CURRENT_BAND)
|
||||||
|
|
||||||
|
return counter
|
||||||
|
|
||||||
|
def prev_band():
|
||||||
|
global CURRENT_BAND
|
||||||
|
CURRENT_BAND = list(bands.keys())[list(bands.keys()).index(CURRENT_BAND)-1]
|
||||||
|
print(CURRENT_BAND)
|
||||||
|
counter = bands[CURRENT_BAND][0] + 1
|
||||||
|
return counter
|
||||||
|
|
||||||
|
def main_loop():
|
||||||
try:
|
try:
|
||||||
# rollover negative previous
|
counter = next_band()
|
||||||
bands_keys = list(bands)
|
|
||||||
CURRENT_BAND = bands[bands_keys[bands_keys.index(CURRENT_BAND)-1]]
|
|
||||||
print(CURRENT_BAND)
|
|
||||||
except IndexError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# new encoder
|
|
||||||
encoder = setup_encoder(bands[CURRENT_BAND])
|
|
||||||
print(CURRENT_BAND)
|
|
||||||
|
|
||||||
return encoder
|
|
||||||
|
|
||||||
def main():
|
|
||||||
encoder = change_band(plus=True)
|
|
||||||
while True:
|
while True:
|
||||||
if encoder.counter > bands[CURRENT_BAND][1]:
|
clkState = GPIO.input(clk)
|
||||||
encoder = change_band(plus=True)
|
dtState = GPIO.input(dt)
|
||||||
if encoder.counter < bands[CURRENT_BAND][0]:
|
swState = GPIO.input(sw)
|
||||||
encoder = change_band(minus=True)
|
if swState == GPIO.HIGH:
|
||||||
time.sleep(.5)
|
print("yeet")
|
||||||
|
if clkState != clkLastState:
|
||||||
if __name__ == "__main__":
|
if counter > bands[CURRENT_BAND][1]:
|
||||||
main()
|
counter = next_band()
|
||||||
|
if counter < bands[CURRENT_BAND][0]:
|
||||||
|
counter = prev_band()
|
||||||
|
if dtState != clkState:
|
||||||
|
counter += step
|
||||||
|
else:
|
||||||
|
counter -= step
|
||||||
|
print(round(counter, 3))
|
||||||
|
clkLastState = clkState
|
||||||
|
sleep(0.01)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\nBye")
|
||||||
|
finally:
|
||||||
|
print("AAAAA")
|
||||||
|
GPIO.cleanup()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user