מה נלמד כאן
- לשלב קלט אנלוגי עם פלט צבעוני
- מיפוי טווחים בפייתון
- לבנות מנורת אווירה
מנורת אווירה

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

הבעיה: הפוטנציומטר מחזיר 0-4095, ואנחנו רוצים 7 צבעים.
מיפוי טווחים
ב-Arduino הייתה פקודה מוכנה בשם map(). בפייתון אין — אבל זו רק שורת חשבון:
level = value * 7 // 4096
// הוא חילוק שלמים — הוא זורק את השארית. ערך 0 → רמה 0, ערך 4095 → רמה 6.
ואם תרצו פונקציה כללית, זה שלוש שורות:
def map_range(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_minוזה בדיוק מה ש-
map()של Arduino עושה מאחורי הקלעים. לפעמים שווה לכתוב בעצמכם כדי להבין.
שבעת הצבעים
| רמה | הצבע | R | G | B |
|---|---|---|---|---|
| 0 | כבוי | 0 | 0 | 0 |
| 1 | אדום | 1023 | 0 | 0 |
| 2 | ירוק | 0 | 1023 | 0 |
| 3 | כחול | 0 | 0 | 1023 |
| 4 | סגול | 512 | 0 | 512 |
| 5 | צהוב | 1023 | 1023 | 0 |
| 6 | לבן | 1023 | 1023 | 1023 |
הניסוי
המטרה: סיבוב הידית מחליף בין שבעה צבעים.
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 1 |
| פוטנציומטר | 1 |
| נורית RGB | 1 |
| נגד 220Ω | 3 |
התרשים החשמלי

החיבור

הקוד
from machine import Pin, PWM, ADC
import time
pot = ADC(Pin(32))
pot.atten(ADC.ATTN_11DB)
red = PWM(Pin(16))
green = PWM(Pin(17))
blue = PWM(Pin(18))
# רשימת הצבעים — כל איבר הוא שלשה
colors = [
(0, 0, 0), # כבוי
(1023, 0, 0), # אדום
(0, 1023, 0), # ירוק
(0, 0, 1023), # כחול
(512, 0, 512), # סגול
(1023, 1023, 0), # צהוב
(1023, 1023, 1023), # לבן
]
while True:
value = pot.read()
level = value * 7 // 4096 # ממפים ל-0..6
r, g, b = colors[level] # פריקה לשלושה משתנים
red.duty(r)
green.duty(g)
blue.duty(b)
time.sleep(0.1)
שימו לב לשתי תכונות של פייתון שחוסכות המון קוד:
1. רשימת שלשות — במקום שבע שרשראות if, טבלה אחת.
2. r, g, b = colors[level] — פריקת ערכים (unpacking). שורה אחת שמפרקת שלשה לשלושה משתנים.
ב-Arduino השיעור הזה דרש שבעה בלוקי
elifו-21 השמות. כאן — טבלה ושלוש שורות. זה ההבדל.
מה אמור לקרות

נסו בעצמכם
- הוסיפו צבע שמיני. מה צריך לשנות בנוסחת המיפוי?
- כתבו את הפונקציה
map_rangeוהשתמשו בה. - בנו מעבר רציף במקום שבע רמות.
- שלבו עם שיעור 6: הפוטו-רזיסטור קובע בהירות, הפוטנציומטר צבע.
- הסירו את
sleep(0.1). מה קורה?


