390 likes | 673 Views
מערכת NXT לרובוטיקה ובקרה ממוחשבת חלק VI - שערים לוגיים ותכנות דינמי. תכנות דינמי.
E N D
מערכת NXT לרובוטיקה ובקרה ממוחשבת חלק VI - שערים לוגיים ותכנות דינמי
תכנות דינמי • שפת NXT-G מאפשרת לנו לקבוע נתונים מראש אשר ישמשו את המערכת בעת הרצת התוכנית. נתונים אלו יכולים להיות עוצמת המנועים, כיוון הנסיעה, משך פעולה וכו'. כאשר נתונים אלו נקבעים על ידינו במהלך כתיבת התוכנית אין באפשרותינו לשנות אותם כאשר התוכנית כבר רצה. לכן נתונים אלו נקראים נתונים סטאטיים. • שפת NXT-G מאפשרת לנו לתכנת בהתבסס על נתונים דינמיים אשר משתנים בעת הרצת התוכנית. באופן זה אנו יכולים ליצור תוכנית סתגלנית יותר המגיבה לשינויים באופן גמיש הרבה יותר. • התכנות הדינמי מתבצע באמצעות חוטי נתונים – Data Wires
חוטי נתונים – Data Wires • תוכנת NXT-G מאפשרת תיכנות דינמי באמצעות חוטי נתונים. קיימים 3 סוגי חיווט: • צהובים – נתונים מספריים (1,4,226.....) • ירוקים – נתונים לוגיים (True/False) • כתומים – נתונים מילוליים (Left, Start,…..)
חוטי נתונים - המשך • חוטי הנתונים מאפשרים לנו להזרים נתונים לפקודות השונות. נתונים אלו הם דינאמיים, כלומר יכולים להשתנות במהלך התוכנית ובהתאם לה. זאת בניגוד לנתונים סטאטיים המוגדרים בעת כתיבת התוכנית ולא ניתנים לשינוי במהלך הרצת התוכנית
נתונים דינאמיים מנוע שמאל מנוע ימין מנוע נוסף כיוון נסיעה היגוי עוצמה משך פעולה הבאה משתנה המכיל ערך מספרי חוט נתונים צהוב
דוגמא ערך מספרי המועבר על ידי חיישן האור והקובע את עוצמת המנועים
ערך לוגי המועבר על ידי חיישן המגע והקובע את כיוון הסיבוב של המנוע ועוד דוגמא
שערים לוגיים • שערים לוגיים הן פעולות חישוביות שאנו מבצעים על ערכים בוליאניים (0 או 1, כן או לא, אמת או שקר, True or False. • תוצאות החישובים של השערים הלוגיים יהיו גם כן בערכים בוליאנים, כלומר 0 או 1. ב NXT-g נשתמש ב True או False • ישנם 3 סוגי שערים לוגיים עיקריים: • And: פעולת And מתבצעת על שני ערכים לוגיים. באם שני הערכים הם True אזי התוצאה תהיה גם כן True. כל מקרה אחר ישיב ערך False. • Or: פעולת Or מתבצעת על שני ערכים לוגיים. באם אחד מהערכים הוא True אזי התוצאה תהיה גם כן True. רק במקרה בו שני הערכים הם False התוצאה תהיה False • Not: פעולת Not מתבצעת על ערך בודד ומשמשת להפוך את ערכו מ True ל False או מ False ל True
שערים לוגיים • בשפת NXT-g ניתן לבצע חישובים לוגיים באמצעות הבלוק Logic הנמצא תחת קטגורית Data ב Complete Palette. ערך ראשון ערך שני תוצאה
סוג השער הלוגי חיווי גרפי של השער ערך ראשון (סטטי) ערך שני (סטטי) שערים לוגיים • בלוק השערים הלוגיים מאפשר הזנת נתונים סטטיים או דינמיים באמצעות חוטי הנתונים.
שערים לוגיים • קיימים מס' דרכים ליצור נתון לוגי בשפת NXT-g: • יצירת משתנה לוגי והשמת ערך True או False • שימוש בחיישן דיגיטלי כגון חיישן המגע להעברת ערך לוגי True או False • שימוש בבלוק Compare או Range לקבלת תוצאה True או False
פקודת Range • במרבית המקרים נרצה לבחון מהו ערכו המדויק של משתנה או חיישן (למשל מה המרחק מהקיר?) אך לעיתים נסתפק בתשובה לוגית העונה לשאלה האם הערך נמצא בטווח אותו אנו מגדירים. התשובה לשאלה שכזו תהיה כן או לא, True או False. • לשם כך אנו משתמשים בפקודת Range המאפשרת לנו לבחון האם ערך כלשהוא נמצא בתוך (או מחוץ) לטווח המוגדר על ידינו (כנתון סטטי או דינמי). • פקודת Range נמצאת בקטגורית Data אשר ב Complete Palette
פקודת Range הערך הנבחן התוצאה (True או False)
פקודת Range בתוך/מחוץ לטווח? הטווח המוגדר הערך הנמדד (סטטי)
פקודת Compare • במרבית המקרים נרצה לבחון מהו ערכו המדויק של משתנה או חיישן (למשל מה המרחק מהקיר?) אך לעיתים נסתפק בתשובה לוגית העונה לשאלה האם הערך גדול/קטן או שווה לערך אחר. • לשם כך אנו משתמשים בפקודת Compare המאפשרת לנו לבחון האם ערך כלשהוא גדול, קטן או שווה לערך אחר המוגדר על ידינו (כנתון סטטי או דינמי). • פקודת Compare נמצאת בקטגורית Data אשר ב Complete Palette
פקודת Compare הערך הנבחן ערך הייחוס התוצאה (True או False)
פקודת Compare גדול,קטן או שווה? הערך הנמדד (סטטי) ערך הייחוס
משימת שערים לוגיים • כיתבו תוכנית העושה שימוש בשערים לוגיים להפעלת רובוט דו-מנועי באמצעות חיישני מגע. יש לאפשר באמצעות החיישנים הנעת הרובוט קדימה, עצירה, פנייה ימינה ופנייה שמאלה. • השתמשו בשערים לוגיים לבחון את מצב החיישנים • זכרו: כאשר החיישן מגע לחוץ הוא מעביר ערך True וכאשר הוא משוחרר הוא מעביר ערך False.
משימת שערים לוגיים • בכמה מצבים ניתן להבחין בעת שילוב 2 חיישני מגע? • True-True • False-False • True-False • False-True • סה"כ קיימים 4 מצבים אפשריים. ניתן להגיע לזאת באמצעות חישוב מתמטי של מס' החיישנים בחזקת מס' המצבים האפשריים. ברשותנו 2 חיישנים כאשר לכל חיישן 2 מצבים אפשריים (True / False) ולכן 4=2^2
משימת שערים לוגיים • כעת עלינו לזהות כל מצב ולהקצות לו פעולה מתאימה:
משימת Range/Compare • כיתבו תוכנית העושה שימוש בשערים לוגיים הבוחנת את המידע המתקבל מחיישן המרחק וחיישן האור. על התוכנית לפעול באופן הבא: • כאשר חיישן האור משיב ערך הגדול מ 40 אך הקטן מ 60 וחיישן המרחק משיב ערך הקטן מ 40 תופיעה דמות סמיילי צוחק ע"ג צג הלבנה החכמה. • כאשר חיישן האור משיב ערך הקטן מ 40 או הגדול מ 60 תופיעה דמות סמיילי בוכה על המסך אלא אם חיישן המרחק ישיב ערך הקטן מ 30. במקרה זה על דמות סמיילי להיות נייטרלית (לא בוכה ולא צוחקת).
משימת Range/Compare האם חיישן האור נמצא בטווח הרצוי? True/False
משימת Range/Compare כאשר חיישן האור אכן נמצא בטווח הרצוי האם חיישן המרחק נמצא בטווח הרצוי?
משימת Range/Compare כאשר חיישן האור אינו נמצא בטווח הרצוי האם חיישן המרחק נמצא בטווח הרצוי?