יום רביעי, 9 בנובמבר 2016

שיעור מספר 6 / RGB

אפשר להפעיל נורת RGB בעזרת פוטנציומטרים אבל היום נלמד להפעיל נורת RGB באמצעות הארדואינו.

נורת RGB היא נורת לד שיכולה להאיר בשלושת הצבעים: אדום (R), ירוק (G) וכחול (B). כמובן שניתן להאיר בכל צבע שהוא לדוגמא: ניתן להאיר בקצת ירוק וקצת כחול ולקבל טורקיז ובדרך זו ניתן לקבל כל גוון כמעט. 

לנורה יש ארבע רגליים - שלוש רגליים ששולטות על שלושת הצבעים (RGB) ורגל נוספת שמשמשת כמינוס (-) ואותה נחבר כמובן לאדמה (GND). 

אז לפני שנתחיל, רשימת מרכיבים: 


  • לוח ארדואינו
  • מטריצה
  • נורת RGB
  • 3 נגדים של 220 ohm
  • ארבעה / חמישה חוטים


איך מחברים? 

1. נחבר את הנורה למטריצה כאשר משמאל לרגל הארוכה יש רק רגל אחת ואילו מימין לרגל הארוכה יש שתי רגליים נוספות. 

2. את הרגל הארוכה, רגל המינוס, מחברים לאדמה (GND). 

3. את הרגל השמאלית (אם העמדתם את הנורה כמו שהסברתי הרגע...) נחבר דרך נגד ליציאה מספר 11 בארדואינו. רגל זו שולטת על הצבע האדום. 

4. את הרגל הימנית ביותר, נחבר דרך נגד אל יציאה מספר 9. רגל זו תשלוט על הצבע הכחול. 

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




התוצאה צריכה להיות בערך כך: 




(מכל מלמדי השכלתי - ומתלמידי יותר מכולם: מצרף לכם תרשים מחודש כפי שהציעו לי התלמידים -



אחרי שרואים את התרשים החדש, התרשים הקודם נראה כל כך לא ברור...)


כעת, כאשר הכל מורכב, נחבר את לוח הארדואינו למחשב ונעלה עליו את הקוד הבא:



באיזה צבע דולקת הנורה? 

השורה הזו:



היא בעצם השורה היחידה כרגע ב void loop והארדואינו כרגע מבצע רק אותה.

ננסה רגע להבין איך היא עובדת: המספר השמאלי ביותר מבטא את המתח החשמלי שזורם מיציאה מספר 11 אל ה"רגל האדומה". במקרה הזה הארדואינו מזרים 255 "אדום" ובמילים אחרות - מקסימום אדום. שימו לב שהערכים האפשריים בסוגריים הם בין 0 ל- 255. 

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

המספר השלישי בסוגריים, הימני ביותר, מראה לנו כמה מתח חשמלי מזרים הארדואינו אל "הרגל הכחולה". במקרה שלנו 0 או במילים אחרות - כלום.

כאשר יש לנו 255 אדום, 0 ירוק ו- 0 כחול, ברור שנורת הלד תדלק בצבע אדום. 

אם הבנתם עד כאן - מספר משימות: 

1. הדליקו את נורת הלד בצבע ירוק. 

2. הדליקו את נורת הלד בצבע כחול. 

3. הדליקו את נורת הלד בצבע צהוב. 

4. הדליקו את נורת הלד בצבע וורוד. 

5. הדליקו את נורת הלד בצבע טורקיז. 

ואם הגעתם עד כאן - 

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




בהצלחה!!



6 תגובות:

  1. מישהו בכלל הצליח לעשות רמזור?
    ברצינות אפילו לא הצלחתי אבל זה נשמע ממש קשה
    ונראה מאוד קשה בסרטון
    פלוני אלמוני

    השבמחק
  2. אני מלך
    רמזור





    int redPin = 11;
    int greenPin = 10;
    int bluePin = 9;

    void setup()
    {
    pinMode(redPin, OUTPUT);
    pinMode(greenPin, OUTPUT);
    pinMode(bluePin, OUTPUT);
    }


    void setColor(int red, int green, int blue)
    {
    #ifdef COMMON_ANODE
    red = 255 - red;
    green = 255 - green;
    blue = 255 - blue;
    #endif
    analogWrite(redPin, red);
    analogWrite(greenPin, green);
    analogWrite(bluePin, blue);
    }

    void loop()
    {
    setColor(1000, 0, 0);
    delay(10000);
    setColor(400, 300, 0);
    delay(1000);
    setColor(0, 1000,0 );
    delay(10000);
    setColor(0, 0,0 );
    delay(500);
    setColor(0, 1000,0 );
    delay(500);
    setColor(400, 300, 0);
    delay(1000);
    }




    מעין צבי המלך

    השבמחק
  3. קל int redPin = 11;
    int greenPin = 10;
    int bluePin = 9;

    void setup()
    {
    pinMode(redPin, OUTPUT);
    pinMode(greenPin, OUTPUT);
    pinMode(bluePin, OUTPUT);
    }


    void setColor(int red, int green, int blue)
    {
    #ifdef COMMON_ANODE
    red = 255 - red;
    green = 255 - green;
    blue = 255 - blue;
    #endif
    analogWrite(redPin, red);
    analogWrite(greenPin, green);
    analogWrite(bluePin, blue);
    }

    void loop()
    {
    setColor(255, 0, 0);
    delay(10000);
    setColor(200, 50, 0);
    delay(10000);
    setColor(0, 255, 0);
    delay(10000);
    }

    השבמחק
  4. int redPin = 11;
    int greenPin = 10;
    int bluePin = 9;

    void setup()
    {
    pinMode(redPin, OUTPUT);
    pinMode(greenPin, OUTPUT);
    pinMode(bluePin, OUTPUT);
    }


    void setColor(int red, int green, int blue)
    {

    red = 255 - red;
    green = 255 - green;
    blue = 255 - blue;
    analogWrite(redPin, red);
    analogWrite(greenPin, green);
    analogWrite(bluePin, blue);
    }

    void loop()
    {
    // policecar
    for (int i = 0; i < 100; i++) {

    setColor(255, 0, 0);
    delay(200);
    setColor(0, 0, 255);
    delay(200);

    }

    setColor(255, 0, 0);
    delay(1300);
    setColor(0, 255, 0);
    delay(1300);
    setColor(0, 0, 255);
    delay(1300);
    setColor(255, 255, 255);
    delay(1300);
    setColor(115, 255, 242);
    delay(1300);
    setColor(255, 0, 0);
    delay(1300);
    setColor(0, 255, 0);
    delay(1300);
    setColor(0, 0, 255);
    delay(1300);
    setColor(255, 255, 255);
    delay(1300);
    setColor(115, 255, 242);
    delay(1300);
    }

    השבמחק
  5. מאוד כיף לעבוד עם זה

    השבמחק

הערות? הארות? יש לך משהו חשוב לספר לכולם? שאלות?

נשמח לשמוע!

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