דלגו לתוכן המרכזי
KitLab
שיעור קודם
נורית RGB — שלושה אובייקטי PWM· 6 / 41
נורית RGB — שלושה אובייקטי PWM
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

נורית RGB — שלושה אובייקטי PWM

מה בשיעור?

  • שלושת צבעי היסוד וערבוב חיבורי
  • מבנה נורית RGB עם קתודה משותפת
  • שלושה אובייקטי PWM עצמאיים
  • טבלת צבעים בטווח 0-1023
  • למה שלושה נגדים ולא אחד

מה נלמד כאן

  • מבנה נורית RGB
  • ערבוב צבעים לפי שלושת צבעי היסוד
  • שלושה אובייקטי PWM בתוכנית אחת

מיליוני צבעים משלושה

תאורת במה, רצועות זוהרות במקלדת, נורות ברמקולים.

תאורת RGB

מאחורי כולן: נורית RGB.


הידע שצריך

1. שלושת צבעי היסוד

גלגל ערבוב הצבעים

כמעט כל צבע נוצר מערבוב אדום, ירוק וכחול:

מערבבים מקבלים
אדום + ירוק צהוב
אדום + כחול סגול
ירוק + כחול טורקיז
שלושתם לבן

זה הפוך מצבעי גואש. באור, ערבוב הכול נותן לבן — כי כל צבע שמוסיפים מוסיף אור. זה נקרא ערבוב חיבורי.

2. נורית RGB

מבנה הנורית

בתוך רכיב אחד יש שלוש נוריות עם קתודה משותפת. לכל צבע אנודה נפרדת.

ובמקום שלוש פקודות — שלושה אובייקטי PWM:

red   = PWM(Pin(5))
green = PWM(Pin(16))
blue  = PWM(Pin(17))

וזה בדיוק היתרון של גישת האובייקטים: כל ערוץ הוא "דבר" עצמאי עם duty() משלו.

3. טבלת הצבעים — בטווח של MicroPython

⚠️ שימו לב: 1023 ולא 255. אם ראיתם טבלאות RGB עם ערכים עד 255 — הן של Arduino. כאן מכפילים בערך פי 4.

הצבע R G B
אדום 1023 0 0
ירוק 0 1023 0
כחול 0 0 1023
צהוב 1023 1023 0
טורקיז 0 1023 1023
סגול 512 0 512
לבן 1023 1023 1023

הניסוי

המטרה: הנורית עוברת בין הצבעים במחזוריות.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
נורית RGB 1
נגד 220Ω 3

שלושה נגדים ולא אחד — יש שלוש נוריות בפנים, וכל אחת צריכה הגנה משלה. נגד משותף היה גורם לבהירות להשתנות לפי מספר הערוצים הדולקים, והצבעים היו יוצאים שגויים.

התרשים החשמלי

התרשים החשמלי

החיבור

חיבור הרכיבים

אדום ל-IO5, ירוק ל-IO16, כחול ל-IO17, קתודה ל-GND.


הקוד

from machine import Pin, PWM
import time

RED_PIN   = 5
GREEN_PIN = 16
BLUE_PIN  = 17

# שלושה אובייקטי PWM — אחד לכל ערוץ
red   = PWM(Pin(RED_PIN))
green = PWM(Pin(GREEN_PIN))
blue  = PWM(Pin(BLUE_PIN))

while True:
    # אדום
    red.duty(1023); green.duty(0); blue.duty(0)
    time.sleep(1)

    # ירוק
    red.duty(0); green.duty(1023); blue.duty(0)
    time.sleep(1)

    # כחול
    red.duty(0); green.duty(0); blue.duty(1023)
    time.sleep(1)

    # צהוב
    red.duty(1023); green.duty(1023); blue.duty(0)
    time.sleep(1)

    # סגול
    red.duty(512); green.duty(0); blue.duty(512)
    time.sleep(1)

שימו לב שכל צבע דורש שלוש פקודות — גם לערוצים שצריכים להיות כבויים. שכחתם לאפס ערוץ? הוא יישאר דולק מהצבע הקודם והגוון ייצא שגוי.

מה אמור לקרות

הנורית מחליפה צבעים


נסו בעצמכם

  • כתבו פונקציה set_color(r, g, b) שמקבלת שלושה ערכים. כמה קוד זה חוסך?
  • בנו מעבר רציף בין אדום לכחול עם range().
  • צרו כתום (1023, 512, 0). התאים לצפוי?
  • ב-Shell: צרו את שלושת האובייקטים והקלידו red.duty(800) ישירות.
  • כמה צבעים אפשר ליצור בסך הכול? (רמז: 1024 אפשרויות לערוץ)

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

נשלח למייל את קובצי הקוד, החומרים ועדכונים על שיעורים חדשים. בלי ספאם.