Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Raspberry pi pico 2w
120 min
Share

إنارة المصابيح بأنماط مختلفة باستخدام لوحة راسبيري باي بيكو

في هذا الفيديو سنتعلم كيفية إنارة مصابيح بألوان مختلفة باستخدام راسبيري باي بيكو 2W، بحيث تقوم اللوحة بإنارة المصابيح بـ32 نمط وتسلسل مختلف، نمط تلو الآخر.

Project Video

Overview

Getting the Items

Raspberry Pi Pico 2 wireless
Get Item
LED Kit – (4 colors, 5 pieces each)
Get Item
1/4 Watt Resistor (20 Pack)
Get Item
Full-size Breadboard
Get Item
Jumper Wires - Male to Male (40 Pack)
Get Item

Steps

Wiring it Up

قم بتوصيل الأسلاك بين لوحة الراسبيرى باى بيكو 2W وبين المصابيح كما فى الصورة التالية :

التوصيلات من لوحة راسبيرى باى بيكو 2W :

• نقوم بتوصيل منفذ ال VBUS بلوحة راسبيرى باى بيكو2W   ← المنافذ الموجبة بلوحة التجارب

• منفذ ال GND بلوحة راسبيرى باى بيكو 2W  ←المنافذ السالبة بلوحة التجارب

التوصيلات من المصابيح :

• الطرف السالب لكل مصباح ← مقاومة 220 أوم ← المنافذ السالبة بلوحة التجارب

• الطرف الموجب للمصباح الأزرق الأول ← منفذ رقم 14 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الازرق الثانى ← منفذ رقم 15 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الازرق الثالث ← منفذ رقم 16 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأخضر الأول ← منفذ رقم 17 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأخضر الثانى ← منفذ رقم 18 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأخضر الثالث ← منفذ رقم 19 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأصفر الأول ← منفذ رقم 20 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأصفر الثانى ← منفذ رقم 21 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأصفر الثالث ← منفذ رقم 22 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأحمر الأول ← منفذ رقم 26 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأحمر الثانى ← منفذ رقم 27 فى لوحة راسبيرى باى بيكو 2W

• الطرف الموجب للمصباح الأحمر الثالث ← منفذ رقم 28 فى لوحة راسبيرى باى بيكو 2W

Coding

وظيفة النص البرمجى التالى هى إنارة مصابيح بألوان مختلفة باستخدام راسبيري باي بيكو 2W، بحيث تقوم اللوحة بإنارة المصابيح بـ32 نمط وتسلسل مختلف، نمط تلو الآخر.

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("تم إيقاف البرنامج")

Testing it Out

بعد رفع النص البرمجى سوف تجد أنه يتم إنارة المصابيح بـ32 نمط وتسلسل مختلف واحد تلو الآخر

Resources

No items found.