"""
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Morse Code SOS with Raspberry Pi Pico and MicroPython    ┃
┃                                                          ┃
┃ This script demonstrates how to use a Raspberry Pi Pico  ┃
┃ to display the SOS Morse code using an LED connected to  ┃
┃ GPIO 25. The Morse code pattern will repeat every 5      ┃
┃ seconds.                                                 ┃
┃                                                          ┃
┃ Copyright (c) 2023 Anderson Costa                        ┃
┃ GitHub: github.com/arcostasi                             ┃
┃ License: MIT                                             ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
"""

# Morse Code patterns for SOS
data = [
    (3, 150),  # 3 short blinks
    (3, 450),  # 3 long blinks
    (3, 130)   # 3 short blinks
]

# Function to control the LED
def signal(blinks, duration):
    for i in range(blinks):
        led.value(1)  # Turn on the LED (HIGH)
        utime.sleep_ms(duration)
        led.value(0)  # Turn off the LED (LOW)
        utime.sleep_ms(duration)

# Configure pin 8 as output
led = machine.Pin(8, machine.Pin.OUT)

# Main loop
while True:
    for blinks, duration in data:
        signal(blinks, duration)
        utime.sleep_ms(1000)  # Interval between Morse code parts
    utime.sleep_ms(4000)      # 4-second interval before repeating Morse code (1000 ms already considered in the loop above)
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT
pico:GP0
pico:GP1
pico:GND.1
pico:GP2
pico:GP3
pico:GP4
pico:GP5
pico:GND.2
pico:GP6
pico:GP7
pico:GP8
pico:GP9
pico:GND.3
pico:GP10
pico:GP11
pico:GP12
pico:GP13
pico:GND.4
pico:GP14
pico:GP15
pico:GP16
pico:GP17
pico:GND.5
pico:GP18
pico:GP19
pico:GP20
pico:GP21
pico:GND.6
pico:GP22
pico:RUN
pico:GP26
pico:GP27
pico:GND.7
pico:GP28
pico:ADC_VREF
pico:3V3
pico:3V3_EN
pico:GND.8
pico:VSYS
pico:VBUS
r2:1
r2:2
bz1:1
bz1:2
led1:A
led1:C