Advertisement
belrey10

2 – Morse Code Machine

Nov 5th, 2024 (edited)
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.23 KB | Source Code | 0 0
  1. import machine
  2. import time
  3.  
  4. # Define the GPIO pin for the button
  5. button_pin = 15
  6. button = machine.Pin(button_pin, machine.Pin.IN, machine.Pin.PULL_UP)
  7.  
  8. # Morse code mapping
  9. morse_code = {
  10.     'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....',
  11.     'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.',
  12.     'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
  13.     'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',
  14.     '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', '.': '.-.-.-', ',': '--..--',
  15.     '?': '..--..', "'": '.----.', '!': '-.-.--', '/': '-..-.', '(': '-.--.', ')': '-.--.-', '&': '.-...',
  16.     ':': '---...', ';': '-.-.-.', '=': '-...-', '+': '.-.-.', '-': '-....-', '_': '..--.-', '"': '.-..-.',
  17.     '$': '...-..-', '@': '.--.-.', ' ': '/'
  18. }
  19.  
  20. dot_duration = 0.2
  21. dash_duration = 0.6
  22. end_of_letter_duration = 1.5
  23.  
  24. def interpret_button_press():
  25.     morse_string = ''
  26.     while True:
  27.         while button.value() == 1:
  28.             time.sleep(0.05)
  29.  
  30.         # Measure the duration of the button press
  31.         start_time = time.time()
  32.         while button.value() == 0:
  33.             pass
  34.         end_time = time.time()
  35.         duration = end_time - start_time
  36.  
  37.         if duration <= dot_duration:
  38.             morse_string += '.'
  39.         else:
  40.             morse_string += '-'
  41.        
  42.         # Wait to see if the user finishes inputting the letter
  43.         start_time = time.time()
  44.         while button.value() == 1:
  45.             if (time.time() - start_time) > end_of_letter_duration:
  46.                 return morse_string
  47.  
  48. def main():
  49.     print("Input Morse code using the button. A short press is '.', a long press is '-'.")
  50.     print("Wait for more than 1.5 seconds to finish inputting a letter.")
  51.    
  52.     while True:
  53.         morse_string = interpret_button_press()
  54.         for key, value in morse_code.items():
  55.             if value == morse_string:
  56.                 print(key)
  57.                 break
  58.         else:
  59.             print(f"Unrecognized Morse code: {morse_string}")
  60.  
  61. if __name__ == "__main__":
  62.     main()
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement