diff --git a/rotary.py b/rotary.py index 9b964ff..1fcc1f6 100644 --- a/rotary.py +++ b/rotary.py @@ -1,6 +1,7 @@ import time from pigpio_encoder.rotary import Rotary +# Bands dict bands = { "80m":[3.5, 4], "40m":[7, 7.3], @@ -10,25 +11,33 @@ bands = { "70cm":[430,440] } +# iterate over band band = iter(bands) -CURRENT_BAND = next(band) +CURRENT_BAND = None -def setup_encoder(ranges:list): +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=ranges[0], - max=ranges[1], - scale=.25, + min=minimum, + max=maximum, + scale=scale, debounce=300, rotary_callback=rotary_callback ) @@ -39,27 +48,29 @@ def setup_encoder(ranges:list): def change_band(plus:bool=False, minus:bool=False): global CURRENT_BAND if plus: + # rollover positive next CURRENT_BAND = next(band) if minus: try: - CURRENT_BAND = bands[list(bands)[list(bands.keys()).index(CURRENT_BAND)-1]] + # rollover negative previous + bands_keys = list(bands) + CURRENT_BAND = bands[bands_keys[bands_keys.index(CURRENT_BAND)-1]] print(CURRENT_BAND) - except Exception as e: - print(e) + except IndexError: + pass + # new encoder encoder = setup_encoder(bands[CURRENT_BAND]) print(CURRENT_BAND) return encoder -encoder = setup_encoder(bands[next(band)]) - def main(): - global encoder + encoder = change_band(plus=True) while True: - if encoder.counter >= encoder.max: + if encoder.counter > bands[CURRENT_BAND][1]: encoder = change_band(plus=True) - if encoder.counter <= encoder.min: + if encoder.counter < bands[CURRENT_BAND][0]: encoder = change_band(minus=True) time.sleep(.5)