from machine import Pin
import time
# Initialize LEDs on pins 18, 19, and 20
led1 = Pin(18, Pin.OUT)
led2 = Pin(19, Pin.OUT)
led3 = Pin(20, Pin.OUT)
# Define each LED's parameters
leds = [
{"pin": led1, "flashes": 3, "state": 1, "flash_count": 0, "last_toggle": 0, "interval": 200, "pause": 5050},
{"pin": led2, "flashes": 4, "state": 0, "flash_count": 0, "last_toggle": 0, "interval": 210, "pause": 6150},
{"pin": led3, "flashes": 5, "state": 1, "flash_count": 0, "last_toggle": 0, "interval": 220, "pause": 7300},
]
# Define GPIO pin 6 as input
pin6 = Pin(6, Pin.IN)
# Function to check if pin 6 is still high
def is_pin_high():
return pin6.value() == 1
# Wait for pin 6 to go high initially
while not is_pin_high():
time.sleep(0.1) # Check every 100 ms to avoid busy-waiting
print("Pin 6 is high, running the main code...")
while True:
try:
#if not is_pin_high():
# print("Pin 6 went low, stopping execution.")
# break
current_time = time.ticks_ms()
for led in leds:
# Calculate time since last toggle
elapsed_time = time.ticks_diff(current_time, led["last_toggle"])
if not is_pin_high():
print("Pin 6 went low, stopping execution.")
machine.reset()
#break
#time.sleep(1)
if led["state"] == 0: # If in flashing mode
if elapsed_time >= led["interval"]: # Toggle LED if interval passed
led["pin"].value(not led["pin"].value()) # Toggle LED state
led["last_toggle"] = current_time
if led["pin"].value() == 0: # LED just turned off
led["flash_count"] += 1
if led["flash_count"] >= led["flashes"]: # Switch to pause after set flashes
led["state"] = 1
led["flash_count"] = 0
led["pin"].value(0) # Ensure LED is off during pause
led["last_toggle"] = current_time
elif led["state"] == 1: # If in pause mode
if elapsed_time >= led["pause"]: # Pause time completed
led["state"] = 0 # Go back to flashing mode
led["last_toggle"] = current_time
except KeyboardInterrupt:
print("Execution interrupted.")
#print("Main code stopped.")