#===================================Solution 1 ======================
from machine import Pin
import time
# Pin definitions based on your breadboard
green = Pin(15, Pin.OUT)
yellow = Pin(4, Pin.OUT)
red = Pin(0, Pin.OUT)
btn = Pin(14, Pin.IN, Pin.PULL_DOWN)
# Initial state: Start with Green light ON
green.value(1)
yellow.value(0)
red.value(0)
while True:
# 1. Check if the button is pressed
if btn.value() == 1:
# Turn off Green, turn on Yellow
green.value(0)
yellow.value(1)
# Wait for 2 seconds (2000 ms) using ticks_ms
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 2000:
pass # The code loops here like a stopwatch until 2000ms passes
# Turn off Yellow, turn on Red
yellow.value(0)
red.value(1)
# Wait for 6 seconds (6000 ms) using ticks_ms
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 6000:
pass # The code loops here until 6000ms passes
# Reset back to the original state (Green ON, Red OFF)
red.value(0)
green.value(1)
# Small resting delay for the simulation
time.sleep_ms(10)
#------------------Solution 2 ----------------------------
# from machine import Pin
# import time
# # Pin definitions based on your breadboard wiring
# green_led = Pin(15, Pin.OUT)
# yellow_led = Pin(4, Pin.OUT)
# red_led = Pin(0, Pin.OUT)
# btn = Pin(14, Pin.IN, Pin.PULL_DOWN)
# # Initial state: Green light is ON, others are OFF
# green_led.value(1)
# yellow_led.value(0)
# red_led.value(0)
# while True:
# # Check if the button is pressed
# if btn.value() == 1:
# # Step 1: Turn off Green, turn on Yellow
# green_led.value(0)
# yellow_led.value(1)
# # Hold Yellow for 2 seconds
# time.sleep(2)
# # Step 2: Turn off Yellow, turn on Red
# yellow_led.value(0)
# red_led.value(1)
# # Hold Red for 6 seconds
# time.sleep(6)
# # Step 3: Turn off Red, turn Green back on, and wait for the next press
# red_led.value(0)
# green_led.value(1)
# # Tiny delay to prevent CPU hogging in the simulation
# time.sleep_ms(20)
# ------------------- your code --------------------------
# from machine import Pin,Timer
# import time
# Tools = [
# Pin(33,Pin.OUT),
# Pin(22,Pin.OUT),
# Pin(23,Pin.OUT),
# Pin(14,Pin.IN,Pin.PULL_DOWN)
# ]
# red = Tools[0].value
# yellow = Tools[1].value
# green = Tools[2].value
# btn = Tools[3].value
# while True:
# green(1)
# if btn() == 1:
# now = time.ticks_ms()
# green(0)
# yellow(1)
# if time.ticks_diff(time.ticks_ms(),now) >= 2000:
# yellow(0)
# red(1)
# now = time.ticks_ms()
# elif time.ticks_diff(time.ticks_ms(),now) >= 6000:
# red(0)
# green(1)