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

מכונת האלגוריתם: 13 שלבים (עם תמונות)
מכונת האלגוריתם: 13 שלבים (עם תמונות)

וִידֵאוֹ: מכונת האלגוריתם: 13 שלבים (עם תמונות)

וִידֵאוֹ: מכונת האלגוריתם: 13 שלבים (עם תמונות)
וִידֵאוֹ: איך עורכים תמונות בטלפון - 2 האפליקציות היחידות שאתם צריכים 2024, יולי
Anonim
Image
Image
סרגל LED: הדפס תלת מימד
סרגל LED: הדפס תלת מימד

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

מטרות

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

המטרות הספציפיות הן:

- ספק מגוון אלגוריתמים לחיפוש ומיון

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

- דמיינו בקרת אלגוריתם; בפרט, האלמנטים הנחשבים.

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

- אפשר למשתמשים לשלוט במהירות ולהשהות את האלגוריתם

-לאפשר למשתמשים לכפות התנהגות הטובה ביותר, במקרה הגרוע ביותר, במקרה ממוצע (ספציפי לאלגוריתם)

- הצג את מספר השלבים ככל שהאלגוריתם מתקדם

רְאִיָה

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

אלקטרוניקה ומארז

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

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

תוֹכנָה

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

אספקה

מכשירי חשמל

לוח פיתוח אחד של ESP32 (למשל, 2 פסי LED WS2812 או דומים, צפיפות 100 נוריות למטר (למשל, כפתור "התחל" משולש אחד (למשל, 12 כפתורים רגעיים (למשל, https://amzn.com/B01N4D4750) - צורות שונות אם תרצה

מחברי חבילה אחת (20) כפתורים קבועים מראש (למשל, מחברי JST 1 (למשל, מקודד סיבוב אחד (למשל, ידית אחת למקודד סיבוב (למשל

מחברי Dupont 1 (למשל, https://amzn.com/B014YTPFT8) - שווה לקבל גם את הכלי לחיצה.

שקע חבית אחד (לצורך הספק) (למשל, תצוגה מספרית TM1637 7 פלחים (למשל, ציוד הלחמה וחיווט

קבצי דגם תלת מימד

אתה יכול למצוא את מודל התלת מימד עבור זוג מודולים של 10 אור ב- Thingiverse:

www.thingiverse.com/thing:4178181

יהיה עליך להדפיס דגם זה חמש פעמים עבור 10 מודולים בסך הכל.

תוֹכנָה

github.com/samguyer/AlgorithmMachine

קַרפִּיף

עץ, פרספקס, ברגים וברגים מנירוסטה

חומר דיפוזיה. האהוב עלי הוא Lee Filters #216 דיפוזיה לבנה מלאה, אך ישנן אפשרויות אחרות. אפילו נייר לבן פשוט עושה עבודה טובה.

שלב 1: אלגוריתמים 101

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

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

כמה זמן זה ייקח?

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

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

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

בסדר אז מה?

כאשר מספר פריטי הנתונים N קטן זה לא משנה הרבה. לדוגמה, עבור N = 10, 10N הוא השם הזה כ- N בריבוע. אבל מה עם N = 1000? או N = 1000000? מיליון בריבוע זה מספר די גדול. אפילו במחשב מהיר מאוד, אלגוריתם ריבועי יכול לקחת זמן רב אם הקלט גדול מספיק. אלגוריתמים אקספוננציאליים הם הרבה יותר בעייתיים: עבור N = 50 אלגוריתם מעריכי ייקח שבועיים לסיים אפילו במחשב שבו כל שלב הוא רק ננו -שנייה אחת (מיליארדית השנייה). אאוץ!

בקצה השני של הסקאלה יש לנו אלגוריתמי זמן לוגריתמיים, שהם מהירים מאוד. זמן יומן הוא ההפך מזמן מעריכי: נתון גודל קלט N, מספר השלבים הוא מעריך T בנוסחה 2^T = N. לדוגמה, אם גודל הקלט שלנו הוא מיליארד, אז אלגוריתם זמן יומן דורש רק 30 צעדים, מאז 2^30 = 1, 000, 000, 000. כמה מתוק זה?! ??!

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

שלב 2: האלגוריתמים

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

חיפוש לינארי

חפש ברשימת הערכים אחד אחד מההתחלה. דורש זמן לינארי.

חיפוש בינארי

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

מיון בועות

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

מיון הכנסה

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

Quicksort

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

מיון מיזוג

מיין רשימה על ידי חלוקה לשניים, מיון שני החצאים בנפרד (באמצעות מיון מיזוג), ולאחר מכן מיזוג אותם יחד על ידי העלאת ערכים. דורש תמיד N * logN.

סוג ערימה

מיין רשימה על ידי בניית מבנה נתונים הנקרא ערימה, המאפשר לך למצוא את הערך הקטן ביותר בזמן יומן. דורש תמיד N * logN.

סוג ביטוני

בדומה למיזוג המיון והמיון המהיר, חלק את הרשימה לשניים, מיין את החצאים ושלב אותם מחדש. אלגוריתם זה דורש זמן N * logN * logN, אך יש לו יתרון שקל להקביל אותו.

שלב 3: סרגל LED: הדפס תלת -ממד את המסכה

סרגל LED: הדפס תלת מימד
סרגל LED: הדפס תלת מימד
סרגל LED: הדפס תלת מימד
סרגל LED: הדפס תלת מימד

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

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

שלב 4: חלופות סרגל LED

אלטרנטיבות בר LED
אלטרנטיבות בר LED
אלטרנטיבות בר LED
אלטרנטיבות בר LED
אלטרנטיבות בר LED
אלטרנטיבות בר LED

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

עבור המעגלים קניתי צינור פליז 13/32, שקוטרו כמעט 1 ס"מ. חתכתי אותו למאה מקטרים של 1 ס"מ ואז ריססתי אותם בצבע לבן.

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

שלב 5: מארז בר LED

מארז בר לד
מארז בר לד
מארז בר לד
מארז בר לד
מארז בר לד
מארז בר לד

המארז שלי פשוט למדי: שתי רצועות עץ לדפנות ושתי רצועות פרספקס בחלק העליון והתחתון. אורך כל החלקים כ- 102 ס"מ (מטר אחד לנורות הלד, בתוספת תוספת קטנה להכיל את החיווט). הצדדים צריכים להיות מעט גבוהים מ- 1 ס"מ כדי לפנות מקום לרצועות הלד. לאחר חיתוך הרצועות דחפתי ביניהן את חתיכות המסכה המודפסות בתלת מימד כדי למדוד את הרוחב לפרספקס. חותכים שתי חתיכות פרספקס ברוחב ובאורך המוט. לבסוף, חותכים רצועה מחומר הדיפוזיה כך שיתאים למסכה.

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

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

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

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

הפעל תבנית בדיקה. עבודה יפה! עשית את החלק הכי קשה!

שלב 6: לוח הבקרה

לוח בקרה
לוח בקרה
לוח בקרה
לוח בקרה
לוח בקרה
לוח בקרה
לוח בקרה
לוח בקרה

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

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

שלב 7: רתמת כפתורים

רתמת כפתורים
רתמת כפתורים
רתמת כפתורים
רתמת כפתורים
רתמת כפתורים
רתמת כפתורים

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

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

מה שעשיתי זה לבנות רתמה קטנה למחברים האלה. אני מלחם סדרה של כלי קיבול JST על פיסת לוח לוח ואז מריץ חוטים בחזרה למחברי Dupont שאחבר אותם למיקרו -בקר. החוט האדום הוא קו VCC, והוא מתחבר לכל כלי הקיבול של JST. החוטים הכחולים הם הנפרדים לכל כפתור.

שלב 8: מקודד סיבובי

מקודד רוטרי
מקודד רוטרי

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

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

שלב 9: תצוגה בת 7 פלחים

תצוגה בת 7 פלחים
תצוגה בת 7 פלחים

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

בחלק האחורי יש ארבעה סיכות: VCC, קרקע ושני חוטים לפרוטוקול הטורי. הלחמתי פיסת כותרת בעלת 4 פינים, המתחברת למחבר מקביל של Dupont המחובר למייקרו.

שלב 10: לוח הבקר הראשי

לוח הבקר הראשי
לוח הבקר הראשי
לוח הבקר הראשי
לוח הבקר הראשי
לוח הבקר הראשי
לוח הבקר הראשי

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

הערה: ייתכן שתרצה להסתכל על הקוד (https://github.com/samguyer/AlgorithmMachine) לפני שתתחיל לחבר את הלוח הראשי, כך שתצורת הסיכה שלך תתאים לשלי.

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

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

חשוב: יש לחבר את הכוח של הכפתורים (החוט האדום) לקו החשמל 3.3V שבמיקרו -בקר. ה- ESP32 הוא שבב 3.3V, כך שרק מקורות 3.3V צריכים להיות מחוברים לסיכות הנתונים.

המיקרו -בקר שואב חשמל (או דוחף חשמל) למסילות (הצד התחתון של הלוח כפי שמוצג) דרך סיכת ה- USB 5V והארקה. כל החוטים האדומים/שחורים האחרים הם VCC ואדומים.

שני החוטים הכחולים הם קווי הנתונים של רצועות הלד (WS2812s).הצמד הצהוב/ירוק הם קווי הנתונים של המקודד הסיבובי, והזוג הצהוב הם החיבור הטורי לתצוגה של 7 פלחים.

שלב 11: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

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

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

שלב 12: קוד

ראשית, פתח את IDE של Arduino וודא שהתקנת את ספריית FastLED.

הורד את קוד מכונת האלגוריתמים מ- GitHub:

github.com/samguyer/AlgorithmMachine.git

אתה יכול לשכפל אותו ישירות לתיקיית ה- Arduino שלך, או להעתיק אותו ביד.

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

העלה ותהנה!

שלב 13: אופן השימוש

מכונת האלגוריתם פשוטה לשימוש וכמעט כל שילוב כפתורים בסדר!

ראשית, השתמש בלחצני הנתונים לאתחול הערכים במערך. ישנן שלוש אפשרויות: (1) אקראי, (2) הוסף ערך אקראי אחד ו- (3) הפוך את המערך. שים לב שהערכים הם קבועים, כך שתוכל לעשות דברים כמו למיין אותם קודם, ואז להוסיף קצת רעש, ולאחר מכן להפעיל אלגוריתם מיון או חיפוש אחר.

בחר אלגוריתם חיפוש או מיון מבין אפשרויות הלחצן האחרות. נכון לעכשיו, אין שום משוב כאשר אתה בוחר את הבחירה הזו (משהו לעבודה בעתיד). לאחר מכן לחץ על כפתור "הפעל".

הכפתור שולט על המהירות. תוכל גם ללחוץ על "הפעל" כדי להשהות ולבטל את השהיית האלגוריתם.

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

תחרות STEM
תחרות STEM
תחרות STEM
תחרות STEM

פרס גדול בתחרות STEM

מוּמלָץ: