תוכן עניינים:

חקר מרחב הצבעים: 6 שלבים
חקר מרחב הצבעים: 6 שלבים

וִידֵאוֹ: חקר מרחב הצבעים: 6 שלבים

וִידֵאוֹ: חקר מרחב הצבעים: 6 שלבים
וִידֵאוֹ: כך נולד הצבע - שירי ילדים אהובים - שירי ילדות ישראלית 2024, יולי
Anonim
חקר מרחב הצבעים
חקר מרחב הצבעים

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

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

פרויקט זה יעזור לך לחקור את מרחב הצבעים האדום, הירוק והכחול (RGB) באמצעות Arduino, LED RGB ומעט מתמטיקה.

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

שלב 1: מרחב צבע RGB

מרחב צבע RGB
מרחב צבע RGB

תודה לקנת מורלנד על האישור להשתמש בתדמיתו הנחמדה.

ברצוננו לחקור את פינות קוביית החלל הצבע תלת -ממדית באמצעות LED RGB המחובר לארדואינו, אך גם רוצים לעשות זאת בצורה מעניינת. נוכל לעשות זאת על ידי קינון של שלוש לולאות (אחת כל אחת לאדום, לירוק ולכחול), וריצה בכל שילוב צבעים אפשרי, אבל זה יהיה ממש משעמם. מופע אור לייזר? בהתאם להגדרות, דפוס Lissajous יכול להיראות כמו קו אלכסוני, עיגול, דמות 8 או דפוס דמוי פרפר מחודד לאט. דפוסי Lissajous נוצרים על ידי מעקב אחר האותות הסינוסידיים של שני מתנדים (או יותר) המתווים על צירים x-y (או במקרה שלנו x-y-z או R-G-B).

שלב 2: הספינה הטובה Lissajous

הספינה הטובה ליסאג'וס
הספינה הטובה ליסאג'וס

הדפוסים המעניינים ביותר של Lissajous מופיעים כאשר תדרי האותות הסינוסיאליים שונים בכמות קטנה. בתצלום האוסילוסקופ כאן התדרים משתנים ביחס של 5 ל -2 (שניהם מספרים ראשוניים). דפוס זה מכסה את הריבוע שלו די טוב, ונכנס לפינות יפה. מספרים ראשוניים גבוהים יותר יעשו עבודה טובה עוד יותר בכיסוי הריבוע וחיטוט עוד יותר בפינות.

שלב 3: המתן - כיצד נוכל להניע LED עם גל סינוסי?

תפסת אותי! אנו רוצים לחקור את מרחב הצבעים התלת -ממדי הנע בין כבוי (0) למצב מלא (255) עבור כל אחד משלושת הצבעים, אך גלים סינוסים משתנים מ -1 ל -1. אנחנו הולכים לעשות קצת מתמטיקה ומתכנתים כאן כדי להשיג את מה שאנחנו רוצים.

  • הכפל כל ערך ב- 127 כדי לקבל ערכים שנעים בין -127 ל- +127
  • הוסף 127 ועגל כל ערך כדי לקבל ערכים שנעים בין 0 ל -255 (קרוב מספיק ל -255 מבחינתנו)

ערכים הנעים בין 0 ל -255 יכולים להיות מיוצגים על ידי מספרים של בתים בודדים (סוג הנתונים "char" בשפת התכנות ארדואינו דמוית C), כך שנחסוך זיכרון על ידי שימוש בייצוג של בתים בודדים.

אבל מה עם זוויות? אם אתה משתמש במעלות, זוויות בטווח סינוסואיד מ 0 עד 360. אם אתה משתמש ברדיאנים, זוויות נעות בין 0 ל 2 פעמים π ("pi"). אנחנו הולכים לעשות משהו ששומר שוב על הזיכרון בארדואינו שלנו, ונחשוב על עיגול המחולק ל 256 חלקים, ויהיו לו "זוויות בינאריות" שנעים בין 0 ל -255, כך שה"זוויות "לכל אחד מהצבעים יכולות להיות מיוצג על ידי מספרים בודדים, או תווים, גם כאן.

הארדואינו די מדהים בדיוק כפי שהוא, ולמרות שהוא יכול לחשב ערכים סינוסים, אנחנו צריכים משהו מהיר יותר. אנו מחשבים את הערכים מראש ונכניס אותם למערך ארוך של 256 ערכים של ערכי יחיד או בתים בתוכנית שלנו (עיין בהצהרת SineTable […] בתוכנית Arduino).

שלב 4: בואו לבנות תבנית 3D LIssajous

בואו לבנות תבנית 3D LIssajous
בואו לבנות תבנית 3D LIssajous

כדי לעבור בין הטבלה בתדירות שונה עבור כל אחד משלושת הצבעים, נשמור אינדקס אחד לכל צבע, ונוסיף קיזוזים ראשוניים יחסית לכל אינדקס תוך כדי מעבר בין הצבעים. נבחר 2, 5 ו -11 כקיזוזים הראשוניים יחסית לערכי המדד האדום, הירוק והכחול. יכולות המתמטיקה הפנימיות של הארדואינו יעזרו לנו על ידי התעטפות אוטומטית כאשר נוסיף את ערך הקיזוז לכל אינדקס.

שלב 5: לשים את כל זה יחד על Arduino

לשים את כל זה יחד על הארדואינו
לשים את כל זה יחד על הארדואינו

לרוב הארדואינים יש מספר ערוצי PWM (או אפנון רוחב דופק). נזדקק לשלושה כאן. UNO ארדואינו מצוין לכך. אפילו מיקרו-בקר Atmel קטן של 8 סיביות (ATTiny85) עובד בצורה מופלאה.

כל אחד מערוצי PWM יניע צבע אחד של ה- RGB LED באמצעות הפונקציה "AnalogWrite" של Arduino, כאשר עוצמת הצבע בכל נקודה סביב המחזור הסינוסי מיוצגת על ידי רוחב דופק, או מחזור הפעלה, מ -0 (הכל כבוי) ל -255 (הכל מופעל). עינינו תופסות את רוחבי הדופק המשתנים האלה, החוזרים על עצמם מספיק מהר, כעוצמות שונות, או בהירות, של ה- LED. שילוב של כל שלושת ערוצי PWM המניעים כל אחד משלושת הצבעים ב- RGB LED, מקבלים את היכולת להציג 256*256*256, או למעלה משישה עשר מיליון צבעים!

יהיה עליך להגדיר את Arduino IDE (סביבת פיתוח אינטראקטיבית) ולחבר אותו ללוח ה- Arduino שלך באמצעות כבל ה- USB שלו. הפעל מגשרים מיציאות PWM 3, 5 ו- 6 (סיכות מעבד 5, 11 ו -12) לשלושה נגדים של 1 KΩ (אלף אוהם) בלוח הפרוטו או במגן הפרוטו שלך, ומהנגדים ל- LED R, G, וסיכות B.

  • אם נורית ה- RGB היא קתודה נפוצה (מסוף שלילי), הפעל חוט מהקטודה בחזרה אל סיכת ה- GND שבארדואינו.
  • אם נורית ה- RGB היא אנודה נפוצה (מסוף חיובי), הפעל חוט מהאנודה לאחור לפין +5V בארדואינו.

המערכון של Arduino יעבוד בכל מקרה. במקרה השתמשתי במנורת קתודה נפוצה של SparkFun Electronics / COM-11120 RGB (בתמונה למעלה, מאתר SparkFun). הסיכה הארוכה ביותר היא הקתודה הנפוצה.

הורד את מערכון RGB-Instructable.ino, פתח אותו עם ה- Arduino IDE ובדוק אותו. הקפד לציין את הלוח או השבב היעד של Arduino היעד, ולאחר מכן טען את התוכנית לתוך Arduino. זה צריך להתחיל מיד.

אתה תראה את מחזור ה- RGB LED בכמה צבעים שאתה יכול למנות, ומיליונים שאתה לא יכול!

שלב 6: מה הלאה?

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

כתיבה ישירה לרשמים על שבב, במקום להשתמש ב- AnalogWrite, כדי להאיץ באמת את העניינים

  • שינוי המעגל כך שחיישן קרבה של IR מאיץ או מאט את המחזור בהתאם למידת ההתקרבות שלך
  • תכנות מיקרו-בקר 8 פינים Atmel ATTiny85 עם מטען האתחול של Arduino והסקיצה הזו

מוּמלָץ: