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

צור מפלס מים חשמלי: 15 שלבים
צור מפלס מים חשמלי: 15 שלבים

וִידֵאוֹ: צור מפלס מים חשמלי: 15 שלבים

וִידֵאוֹ: צור מפלס מים חשמלי: 15 שלבים
וִידֵאוֹ: ילד בן 11 גנב, שבר חלון ושילם על כך ביוקר! 2024, יולי
Anonim
צור מפלס מים חשמלי
צור מפלס מים חשמלי

השתמש במפלס זה כדי להציג במהירות ובקלות את הטיה של כל אובייקט המצורף!

נוצר על ידי קייטלין ממכון ראפלס.

שלב 1: יעדים

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

למד לעבוד עם תצוגת LED 5x5 של מיקרו: ביט!

שלב 2: חומרים

1 x BBC מיקרו: ביט

1 x כבל מיקרו USB

2 x סוללות AA

1 x סוללת AA כפולה

שלב 3: קידוד מוקדם: חבר את המיקרו: ביט

  1. חבר את ה- micro: bit של BBC למחשב שלך באמצעות כבל מיקרו USB.
  2. גש לעורך javascript עבור המיקרו: ביט בכתובת makecode.microbit.org.

שלב 4: שלב 0: זרימת קוד

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

עבור מפלס המים החשמלי, השלבים שננקוט בקוד עבור כל לולאה הם:

  • קרא את קריאות ההטיה ממד התאוצה.
  • המר קריאות הטיה לרמות הטיה שיוצגו במטריצת LED.
  • בדוק אם יש שינויים בקריאות רמת ההטיה מהלולאה הקודמת.
  • צור מערך של קואורדינטות LED עבור מקרי הטייה וכיוונים שונים.
  • מתווה LED מתאם על מטריצת LED מיקרו: ביט.

כמה פונקציות נוספות שעלינו לכלול הן:

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

שלב 5: שלב 1: הגדרת משתנים

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

  • tiltList: מערך המאחסן את מידת ההטיה מערכים 0-4 בסדר [שמאל, ימין, קדימה, אחורה]
  • tiltBoundary: גבול רמת ההטיה הראשונה בין 0 (ללא הטיה) ל -1 (הטיה קלה)
  • prevState: מערך המאחסן את ערכי ההטיה של המיקרו: ביט מלולאה קודמת באותו פורמט של tiltList, המשמש לבדיקת שינוי הטיה בין איטרציות.
  • ledPlotList: עלילת מערכי קואורדינטות מובילות בצורה (x, y). כדי להגדיר מערך, אנו משתמשים במספר הסוג כדי לציין מערך מקונן של משתנים מסוג: מספר.

שלב 6: שלב 2: המרת ערכי הטיה לרמות

מכיוון שמטריצת ה- LED 5x5 יכולה להציג רק כל כך הרבה מידע, ערכי ההטיה בפועל לא יהיו שימושיים לתצוגה.

במקום זאת, פונקציה tiltExtent () לוקחת את הפרמטר num, המתייחס לערך ההטיה ממד התאוצה, וממיר את ערכי ההטיה הללו (num) לרמות הטיה מ- 0 ל- 4.

0 מציין אין הטייה בכיוון הנתון ו -4 מציין הטייה גדולה מאוד, בעוד -1 מוחזר כאשר יש שגיאה.

כאן, tiltBoundary ו- tiltSensitivity משמשים כערכי הגבול בין רמות הטיה.

שלב 7: שלב 3: הידור רמות הטיה

שתי הפונקציות checkRoll () ו- checkPitch () כותבות את רמות ההטיה המתקבלות מ- tiltExtent () לתוך tiltList לצירים של גליל (שמאל-ימין) והצליל (קדימה-אחורה) בהתאמה.

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

מכיוון שקריאות מד התאוצה שליליות הן להטיה שמאלה והן קדימה, עלינו להשתמש בפונקציה Math.abs () כדי להשיג את המודול של הערך השלילי שיינתן לפונקציה tiltExtent () כפרמטר לשני הכיוונים הללו.

שלב 8: שלב 4: כתוב פונקציות LEDPlotList

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

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

פונקציות התכנון הללו כותבות מערך של קואורדינטות מובילות ל- ledPlotList שישרטטו בהמשך.

שלב 9: שלב 5: עלילת מטריצת LED לכל מקרה

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

PlotResult () מכיל תנאים מרובים אם בודקים את סוג ההטיה ומתווים את מטריצת ה- LED בהתאם באמצעות led.plot (x, y). השילובים האפשריים של הטיה הם:

כיוון יחיד: שמאל בלבד או ימין בלבד

כיוון יחיד: קדימה בלבד או אחורה בלבד

שני כיוונים: קדימה-שמאלה או אחורה-שמאלה

שני כיוונים: קדימה-ימינה או אחורה-ימינה

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

שלב 10: שלב 6: כתוב פונקציות כיול

לאחר שהשלמנו את עיקר הקוד, אנו מוסיפים כעת את הפונקציות calibTilt () ואת resetTilt ().

calibTilt () מאפשר למשתמשים לגרור את הטיה לאפס במיקומה הנוכחי של המיקרו: ביט

resetTilt () מאפס את כיול הלוח למצב המקורי שלו.

שלב 11: שלב 7: כתוב פונקציית מצב

אנו מוסיפים פונקציה checkState () פשוטה כדי לבדוק אם רמות ההטיה השתנו מאיטרציה קודמת.

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

שלב 12: שלב 8: הרכבת הכל חלק 1

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

ראשית, הגדרנו כפתור A ו- B במיקרו: ביט לפונקציות calibTilt () ו- resetTilt () בהתאמה באמצעות input.onButtonPressed (), וציירנו סימון במטריצת ה- LED עם סיום הכיול.

שלב 13: שלב 9: הרכבת הכל חלק 2

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

אם יש שינוי ברמות ההטיה כלומר stateChange == 1, הקוד יעודכן את prevState לרמות ההטיה החדשות ויחזיר את stateChange ל 0 לאיטרציה הבאה, ויתווה את רמות ההטיה המעודכנות במטריצת ה- LED באמצעות PlotResult ().

שלב 14: שלב 10: הרכבה

הבזק את הקוד שהושלם למיקרו: ביט.

חבר את המיקרו: ביט ואת מארז הסוללות היטב לכל חפץ והוא מוכן לשימוש!

מדהים

תיהנה מהפלס החשמלי שלך! ובעוד אתה בעניין, למה שלא תנסה להרחיב את היכולות של חיישן ההטיה או אפילו להפוך אותו למשחק?

מאמר זה הוא מ- TINKERCADEMY.

שלב 15: מקור

מאמר זה הוא מתוך:

אם יש לך שאלות, תוכל ליצור קשר עם: [email protected].

מוּמלָץ: