מה נלמד כאן
- מבנה נורית RGB
- ערבוב צבעים לפי שלושת צבעי היסוד
- שלושה אובייקטי PWM בתוכנית אחת
מיליוני צבעים משלושה
תאורת במה, רצועות זוהרות במקלדת, נורות ברמקולים.

מאחורי כולן: נורית 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 אפשרויות לערוץ)


