import network
import time
from machine import Pin
import blynklib
# --- YOUR BLYNK TOKEN ---
BLYNK_AUTH = "d2wl6Q-9S-lr4SvElrkPBgOzt0vXT2ly"
# 1. Define LED Pins (Matching your breadboard)
led_blue = Pin(13, Pin.OUT)
led_green = Pin(12, Pin.OUT)
led_red = Pin(14, Pin.OUT)
# 2. Setup Wokwi Virtual WiFi
print("Connecting to Wokwi WiFi...")
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect("Wokwi-GUEST", "")
while not wifi.isconnected():
time.sleep(0.1)
print("Connected to WiFi!")
# 3. Connect to Blynk Cloud
print("Connecting to Blynk Cloud...")
blynk = blynklib.Blynk(BLYNK_AUTH)
print("==============================")
print("Blynk Connected Successfully!")
print("==============================")
# 4. Animation Variables
current_mode = 0 # 0: Off, 1: Blink, 2: Alternate
last_time = time.ticks_ms()
interval = 500 # Blink speed in milliseconds
led_state = False
# --- BLYNK BUTTON HANDLERS ---
# These trigger automatically when you press a button on blynk.cloud
@blynk.on("V1")
def v1_handler(value):
global current_mode
if int(value[0]) == 1: # 1 means the button was pushed
current_mode = 1
print("Mode changed: BLINK")
@blynk.on("V2")
def v2_handler(value):
global current_mode
if int(value[0]) == 1:
current_mode = 2
print("Mode changed: ALTERNATE")
@blynk.on("V3")
def v3_handler(value):
global current_mode
if int(value[0]) == 1:
current_mode = 0
print("Mode changed: OFF")
# Turn off all LEDs immediately
led_blue.value(0)
led_green.value(0)
led_red.value(0)
# --- MAIN LOOP ---
while True:
blynk.run() # Listens constantly for button presses from the cloud
# LED Animation Logic (Non-blocking)
current_time = time.ticks_ms()
if time.ticks_diff(current_time, last_time) >= interval:
last_time = current_time
if current_mode == 1:
# BLINK MODE: All LEDs blink together
led_state = not led_state
led_blue.value(led_state)
led_green.value(led_state)
led_red.value(led_state)
elif current_mode == 2:
# ALTERNATE MODE: Middle LED alternates with the outside LEDs
led_state = not led_state
led_blue.value(led_state)
led_green.value(not led_state)
led_red.value(led_state)