זמר שלושת הצבעים (או איך לתפעל RGB)

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

ללד שלנו יש ארבע רגלים, אחת מחוברת להארקה (לשם כל המתח שלנו ילך) וכל הרגלים האחרות מיצגות את הצבעים השונים, כמה מתח שנעביר לכל רגל זה כמה חזק הנורה של אותו הצבע תאיר

הנה התרשים של איך נחבר את הנורה ללוח שלנו בעזרת המיני מטריצה שלנו:

דבר ראשון נזזה איזה חיבור שולט על איזה צבע, וניתן לו את השם המתאים

# נחבר קודם את הרגל הכי ארוכה להארכה בעזרת החוט השחור

# אחר כך בעזרת החוט האדום נחבר את הרגל הקצרה
# לחיבור D1

>>> from machine import Pin
>>> r = Pin(5, Pin.OUT)
>>> r.on()

# אם נדלקה הנורה באדום, הצלחנו, אם בצבע אחר, נחווט מחדש עד שנמצא את האדום
# נכבה את האדום המסנוור הזה
>>> r.off()

# עכשיו נחבר את החוט הירוק לרגל הקרובה לחיבור ההארקה
# לחיבור D2
# שימו לב לתרשים של המספרים של חיבורי הפינים

>>> g = Pin(4, Pin.OUT)
>>> g.on()

# האור הירוק אמור להידלק
>>> g.off()

# לחיבור של האור הכחול נדלק לחיבור
# D5

>>> b = Pin(14, Pin.OUT)
>>> b.on()

# האור הכחול ידלק

# וכאשר נדליק את כולם ביחד
>>> r.on(); g.on(); b.on()

# הסתנוורתי כבר
>>> r.off(); g.off(); b.off()

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

לשיטה זאת קוראים אִפְנוּן מֶשֶׁךְ הַדֹּפֶק, אמש"ד, או בלעז Pulse-width modulation, ובקיצור PWM.

הייתי צריך לחפש את התרגום של זה באקדמיה ללשון עברית http://hebrew-terms.huji.ac.il/milonimsearch3.asp?milonid=29&ord=%27ktaim.ketae%2Cmilonim.year+desc%27

בשיטה זאת, אנחנו מנתקים ומחברים את המתח בקצב אחיד, הגברה של הקצב תניב יותר מתח, האטה של הקצב פחות מתח בוא נראה איך בדיוק עושים את זה


>>> from machine import PWM, Pin
>>> r = PWM(Pin(5, Pin.OUT))
>>> g = PWM(Pin(4, Pin.OUT))
>>> b = PWM(Pin(14, Pin.OUT))

# נתחיל חלש
>>> r.duty(10)

# ולאט נגביר
>>> r.duty(100)
>>> r.duty(500)
>>> r.duty(1024)

>>> r.duty(0)

# עכשיו שילוב של שני צבעים
>>> r.duty(1024)
>>> g.duty(500)

# ולכבות הכל
>>> r.duty(0); g.duty(0); b.duty(0)

עכשיו כבו את כל האורות בבית, ונסו את מנורת הדיסקו (כרמל וגלעד אהבו במיוחד לכסות את המנורה בקופסאות שקופות)

שימרו את התוכנית הנ"ל בקובץ "main.py" והעלו אותה אל הלוח

import sys
import os
import time 
from machine import PWM, Pin

r = PWM(Pin(5, Pin.OUT))
g = PWM(Pin(4, Pin.OUT))
b = PWM(Pin(14, Pin.OUT))

# נחזור על הפעולה לעולמי עולמים
while True:
    # נגריל מספר בשביל לבחור את הצבע שנדליק
    color_index = int.from_bytes(os.urandom(8), sys.byteorder) % 3
    # נגריל מספר לקבוע את העוצמה
    duty = int.from_bytes(os.urandom(8), sys.byteorder) % 1024

    # ננמיך את כולם
    r.duty(0)
    g.duty(0)
    g.duty(0)

    # נדליק את הנבחר
    if color_index == 0:
        r.duty(duty)
    elif color_index == 1:
        g.duty(duty)
    elif color_index == 2:
        b.duty(duty)

    # נחכה קצת
    time.sleep(0.2)

    # וחוזר חלילה, עד לקבלת כאב ראש, או התקף אפילפטי

results matching ""

    No results matching ""