From 2d055ef04f3a24d7710ba920baf7ce84455d29c2 Mon Sep 17 00:00:00 2001 From: PiFestim Date: Sat, 30 Jul 2022 18:31:03 +0100 Subject: [PATCH] screen is working now, TODO fix wiring diagram --- display | Bin 0 -> 164332 bytes main.py | 90 ++++++++++++++++++++++++++++++++++++++++------------ rotary.py | 92 +++++++++++++++++++++++++++++++++--------------------- 3 files changed, 127 insertions(+), 55 deletions(-) create mode 100755 display diff --git a/display b/display new file mode 100755 index 0000000000000000000000000000000000000000..11249d65aadf67302654c72d701181a5b62f1b87 GIT binary patch literal 164332 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 41b0f9c..1a18354 100644 --- a/main.py +++ b/main.py @@ -3,13 +3,10 @@ import pigpio import time import datetime import asyncio -import os -from itertools import cycle from RPi import GPIO -from time import sleep from itertools import cycle -from rotary import main_loop as rotary + bands = { "80m":[3.5, 4], @@ -22,27 +19,78 @@ bands = { # Setup for encoder band = cycle(bands) -CURRENT_BAND = None -step = 0.025 +CURRENT_BAND:str = None + +def next_band(): + global CURRENT_BAND + CURRENT_BAND = next(band) + FREQUENCY = bands[CURRENT_BAND][0] + print(FREQUENCY) + print(CURRENT_BAND) + + return FREQUENCY + +def prev_band(): + global CURRENT_BAND + CURRENT_BAND = list(bands.keys())[list(bands.keys()).index(CURRENT_BAND)-1] + print(CURRENT_BAND) + FREQUENCY = bands[CURRENT_BAND][0] + 1 + return FREQUENCY + +FREQUENCY = next_band() clk=17 dt=27 sw=22 - GPIO.setmode(GPIO.BCM) GPIO.setup(clk, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) -GPIO.setup(dt, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) -GPIO.setup(sw, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) -counter = 0 + clkLastState = GPIO.input(clk) + +async def rotary(clk=clk, dt=dt, sw=sw, step=0.025): + GPIO.setmode(GPIO.BCM) + + GPIO.setup(clk, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + GPIO.setup(dt, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + GPIO.setup(sw, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + + global FREQUENCY, clkLastState + + try: + while True: + clkState = GPIO.input(clk) + dtState = GPIO.input(dt) + swState = GPIO.input(sw) + if swState == GPIO.HIGH: + print("yeet") + if clkState != clkLastState: + if FREQUENCY > bands[CURRENT_BAND][1]: + FREQUENCY = next_band() + print(FREQUENCY) + if FREQUENCY < bands[CURRENT_BAND][0]: + FREQUENCY = prev_band() + print(FREQUENCY) + if dtState != clkState: + FREQUENCY += step + else: + FREQUENCY -= step + # print(round(FREQUENCY, 3)) + clkLastState = clkState + await asyncio.sleep(.01) + except KeyboardInterrupt: + print("\nBye") + finally: + print("AAAAA") + GPIO.cleanup() + + # 1. Hook up the screen and buttons # * the screen should show the frequency we're at # * read the buttons # 2. Encoder [x] # * Change frequency in the scope of a given band PTT_IS_ON:bool = False -FREQUENCY:float = float(430) modulations = cycle(["./modulations/ssb.sh", "./modulations/fmrds.sh"]) @@ -51,7 +99,6 @@ pi = pigpio.pi() # button pin pi.set_mode(10, pigpio.INPUT) # modulation change pin(change this) -pi.set_mode(11) async def run_command(*args): process = await asyncio.create_subprocess_exec(*args, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) @@ -66,24 +113,27 @@ async def button_press(gpio:int, level): PTT_IS_ON = True if(pi.read(gpio)==0): PTT_IS_ON = False - await asyncio.sleep(.5) - + await asyncio.sleep(.01) # async def frequency(gpio): # # TODO write this function after hooking up the encoder -async def main(freq:float): +async def main(): # TODO change after figuring out the logic task_created = False - - asyncio.create_task(rotary) + asyncio.create_task(rotary()) print("Ready") + cached_frequency = FREQUENCY + while True: - await button_press(gpio, level) + if FREQUENCY != cached_frequency: + cached_frequency = FREQUENCY + asyncio.create_task(run_command("./display", str(format(round(FREQUENCY,3), "7f")))) + await button_press(10, pigpio.EITHER_EDGE) if (PTT_IS_ON and not task_created): - asyncio.create_task(run_command(MODULATION, str(freq))) + asyncio.create_task(run_command(next(modulations), str(FREQUENCY))) task_created = True elif (task_created and not PTT_IS_ON): await asyncio.sleep(1) @@ -94,6 +144,6 @@ async def main(freq:float): if __name__ == "__main__": try: - asyncio.run(main("", 430)) + asyncio.run(main()) except KeyboardInterrupt: print("\n") diff --git a/rotary.py b/rotary.py index f55a4f0..4f4496c 100644 --- a/rotary.py +++ b/rotary.py @@ -1,42 +1,64 @@ -def next_band(): - global CURRENT_BAND - CURRENT_BAND = next(band) - counter = bands[CURRENT_BAND][0] - print(counter) - print(CURRENT_BAND) +from functools import wraps, partial +from RPi import GPIO +from time import sleep +from itertools import cycle - return counter +clkLastState = GPIO.input(clk) +counter = next_band() + + +bands = { + "80m":[3.5, 4], + "40m":[7, 7.3], + "20m":[14, 14.35], + "10m":[28, 29.7], + "2m":[144,146], + "70cm":[430,440] +} + +# Setup for encoder +band = cycle(bands) +CURRENT_BAND = None +step = 0.025 + + +def next_band(): + global CURRENT_BAND + CURRENT_BAND = next(band) + 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 + 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(): +async def main_loop(clk, dt, sw): try: - counter = next_band() - while True: - clkState = GPIO.input(clk) - dtState = GPIO.input(dt) - swState = GPIO.input(sw) - if swState == GPIO.HIGH: - print("yeet") - if clkState != clkLastState: - if counter > bands[CURRENT_BAND][1]: - 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) + clkState = GPIO.input(clk) + dtState = GPIO.input(dt) + swState = GPIO.input(sw) + if swState == GPIO.HIGH: + print("yeet") + if clkState != clkLastState: + if counter > bands[CURRENT_BAND][1]: + 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") + print("\nBye") finally: - print("AAAAA") - GPIO.cleanup() + print("AAAAA") + GPIO.cleanup()