import machine
import time
import random
# تعريف منافذ المصابيح حسب الترتيب المطلوب (أزرق، أخضر، أصفر، أحمر)
led_pins = [14, 15, 16, # أزرق
17, 18, 19, # أخضر
20, 21, 22, # أصفر
26, 27, 28] # أحمر
# إنشاء قائمة LED objects
leds = [machine.Pin(pin, machine.Pin.OUT) for pin in led_pins]
# تعيين ألوان المجموعات
BLUE = (0, 2) # منفذ 14-16
GREEN = (3, 5) # منفذ 17-19
YELLOW = (6, 8) # منفذ 20-22
RED = (9, 11) # منفذ 26-28
# تعريف دوال المساعدة
def led_on(led_index):
leds[led_index].value(1)
def led_off(led_index):
leds[led_index].value(0)
def turn_all_off():
for led in leds:
led.value(0)
def turn_all_on():
for led in leds:
led.value(1)
def turn_group_on(group_range, delay=0):
start, end = group_range
for i in range(start, end + 1):
led_on(i)
if delay > 0:
time.sleep(delay)
def turn_group_off(group_range, delay=0):
start, end = group_range
for i in range(start, end + 1):
led_off(i)
if delay > 0:
time.sleep(delay)
def wave_effect(direction="forward", delay=0.1):
"""تأثير الموجة"""
if direction == "forward":
for i in range(len(leds)):
led_on(i)
time.sleep(delay)
led_off(i)
else:
for i in range(len(leds)-1, -1, -1):
led_on(i)
time.sleep(delay)
led_off(i)
def group_wave():
"""موجة حسب المجموعات"""
groups = [BLUE, GREEN, YELLOW, RED]
for group in groups:
turn_group_on(group)
time.sleep(0.3)
turn_group_off(group)
def police_effect():
"""تأثير شرطة"""
for _ in range(3):
turn_group_on(RED)
time.sleep(0.1)
turn_group_off(RED)
turn_group_on(BLUE)
time.sleep(0.1)
turn_group_off(BLUE)
def breathing_effect(group_range, cycles=3):
"""تأثير التنفس لمجموعة معينة"""
start, end = group_range
for _ in range(cycles):
for brightness in range(0, 101, 5):
# محاكاة تأثير التنفس (للبساطة نستخدم on/off متكرر)
turn_group_on(group_range)
time.sleep(brightness / 1000)
turn_group_off(group_range)
time.sleep((100 - brightness) / 1000)
time.sleep(0.5)
def running_lights():
"""أضواء جارية"""
for i in range(len(leds)):
turn_all_off()
led_on(i)
led_on((i+1) % len(leds))
led_on((i+2) % len(leds))
time.sleep(0.1)
def color_chase():
"""مطاردة الألوان"""
groups = [BLUE, GREEN, YELLOW, RED]
for group in groups:
turn_group_on(group)
time.sleep(0.2)
turn_group_off(group)
def random_twinkle():
"""وميض عشوائي"""
turn_all_off()
for _ in range(20):
led = random.randint(0, len(leds)-1)
led_on(led)
time.sleep(0.05)
led_off(led)
def binary_count():
"""عد ثنائي"""
for i in range(12):
turn_all_off()
for j in range(12):
if (i >> j) & 1:
led_on(j)
time.sleep(0.5)
def christmas_lights():
"""أضواء عيد الميلاد"""
for _ in range(5):
turn_group_on(RED)
time.sleep(0.2)
turn_group_off(RED)
turn_group_on(GREEN)
time.sleep(0.2)
turn_group_off(GREEN)
def heartbeat_effect():
"""تأثير نبض القلب"""
for _ in range(2):
turn_group_on(RED)
time.sleep(0.1)
turn_group_off(RED)
time.sleep(0.1)
turn_group_on(RED)
time.sleep(0.3)
turn_group_off(RED)
time.sleep(0.5)
def color_wipe():
"""مسح الألوان"""
groups = [BLUE, GREEN, YELLOW, RED]
for group in groups:
turn_group_on(group)
time.sleep(0.3)
for group in reversed(groups):
turn_group_off(group)
time.sleep(0.3)
def alternating_groups():
"""تبادل المجموعات"""
for _ in range(4):
turn_group_on(BLUE)
turn_group_on(YELLOW)
turn_group_off(GREEN)
turn_group_off(RED)
time.sleep(0.3)
turn_group_off(BLUE)
turn_group_off(YELLOW)
turn_group_on(GREEN)
turn_group_on(RED)
time.sleep(0.3)
def snake_effect():
"""تأثير الثعبان"""
for i in range(len(leds)):
led_on(i)
if i >= 3:
led_off(i-3)
time.sleep(0.1)
for i in range(len(leds)-1, -1, -1):
led_off(i)
if i <= len(leds)-4:
led_on(i+3)
time.sleep(0.1)
def theater_chase():
"""مطاردة المسرح"""
for _ in range(10):
for start in range(3):
turn_all_off()
for i in range(start, len(leds), 3):
led_on(i)
time.sleep(0.2)
def gradient_effect():
"""تأثير تدرجي"""
groups = [BLUE, GREEN, YELLOW, RED]
for group in groups:
start, end = group
for i in range(start, end + 1):
led_on(i)
time.sleep(0.1)
for group in reversed(groups):
start, end = group
for i in range(start, end + 1):
led_off(i)
time.sleep(0.1)
def spiral_in():
"""تأثير دوامة للداخل"""
left, right = 0, len(leds) - 1
while left <= right:
if left == right:
led_on(left)
else:
led_on(left)
led_on(right)
time.sleep(0.2)
left += 1
right -= 1
turn_all_off()
def spiral_out():
"""تأثير دوامة للخارج"""
mid = len(leds) // 2
left, right = mid, mid + 1
while left >= 0 and right < len(leds):
if left >= 0:
led_on(left)
if right < len(leds):
led_on(right)
time.sleep(0.2)
left -= 1
right += 1
turn_all_off()
def ping_pong():
"""تأثير بينج بونج"""
for i in range(len(leds)):
led_on(i)
time.sleep(0.1)
led_off(i)
for i in range(len(leds)-2, 0, -1):
led_on(i)
time.sleep(0.1)
led_off(i)
def fire_effect():
"""تأثير النار (للمجموعة الحمراء والصفراء)"""
for _ in range(10):
turn_group_on(RED)
time.sleep(0.1)
turn_group_off(RED)
turn_group_on(YELLOW)
time.sleep(0.1)
turn_group_off(YELLOW)
def water_effect():
"""تأثير الماء (للمجموعة الزرقاء والخضراء)"""
for _ in range(10):
turn_group_on(BLUE)
time.sleep(0.15)
turn_group_off(BLUE)
turn_group_on(GREEN)
time.sleep(0.15)
turn_group_off(GREEN)
def synchronized_blink():
"""وميض متزامن"""
for _ in range(5):
turn_all_on()
time.sleep(0.2)
turn_all_off()
time.sleep(0.2)
def random_groups():
"""إضاءة مجموعات عشوائية"""
groups = [BLUE, GREEN, YELLOW, RED]
for _ in range(8):
turn_all_off()
group = random.choice(groups)
turn_group_on(group)
time.sleep(0.3)
def color_mix():
"""مزج الألوان"""
combinations = [
(BLUE, GREEN),
(GREEN, YELLOW),
(YELLOW, RED),
(RED, BLUE),
(BLUE, YELLOW),
(GREEN, RED)
]
for combo in combinations:
turn_all_off()
for group in combo:
turn_group_on(group)
time.sleep(0.4)
def fast_strobe():
"""ستروب سريع"""
for _ in range(20):
turn_all_on()
time.sleep(0.05)
turn_all_off()
time.sleep(0.05)
def slow_fade_groups():
"""تتلاشى المجموعات ببطء"""
groups = [BLUE, GREEN, YELLOW, RED]
for group in groups:
turn_group_on(group)
time.sleep(0.5)
for group in groups:
turn_group_off(group)
time.sleep(0.5)
def double_wave():
"""موجة مزدوجة من الطرفين"""
for i in range(6):
led_on(i)
led_on(11-i)
time.sleep(0.1)
for i in range(6):
led_off(i)
led_off(11-i)
time.sleep(0.1)
def police_2():
"""تأثير شرطة متقدم"""
for _ in range(3):
# أزرق من اليمين لليسار
for i in range(BLUE[0], BLUE[1]+1):
led_on(i)
time.sleep(0.05)
led_off(i)
# أحمر من اليسار لليمين
for i in range(RED[1], RED[0]-1, -1):
led_on(i)
time.sleep(0.05)
led_off(i)
def main():
patterns = [
wave_effect,
lambda: wave_effect("backward"),
group_wave,
police_effect,
lambda: breathing_effect(RED),
running_lights,
color_chase,
random_twinkle,
binary_count,
christmas_lights,
heartbeat_effect,
color_wipe,
alternating_groups,
snake_effect,
theater_chase,
gradient_effect,
spiral_in,
spiral_out,
ping_pong,
fire_effect,
water_effect,
synchronized_blink,
random_groups,
color_mix,
fast_strobe,
slow_fade_groups,
double_wave,
police_2,
lambda: turn_all_on(),
lambda: (turn_all_on(), time.sleep(1), turn_all_off()),
lambda: (turn_group_on(BLUE), turn_group_on(RED), time.sleep(0.5), turn_all_off()),
lambda: (turn_group_on(GREEN), turn_group_on(YELLOW), time.sleep(0.5), turn_all_off())
]
print("بدء عرض أنماط الإضاءة (32 نمط)")
while True:
for i, pattern in enumerate(patterns):
print(f"النمط {i+1}/32")
turn_all_off()
pattern()
time.sleep(0.5) # فاصل بين الأنماط
# تشغيل البرنامج
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
turn_all_off()
print("تم إيقاف البرنامج")