פרסומת
היום אנסה ללמד אותך קצת על ריסטרי משמרות. אלה הם חלק חשוב למדי בתכנות של Arduino, בעיקרון מכיוון שהם מרחיבים את מספר התפוקות שבהם תוכלו להשתמש, בתמורה ל -3 סיכות בקרה בלבד. אתה יכול גם לרשום שרשראות שרשרת חיננית ביחד על מנת לקבל תפוקות רבות עוד יותר.
זוהי קפיצה משמעותית בקושי מהמדריכים הקודמים למרות זאת, ואני ממליץ לך בחום הבנה טובה באמת על החומר הקודם (קישורים בסוף מאמר זה), כמו גם הבנה ה יסודות בינאריים מה זה בינארי? [הסביר טכנולוגיה]בהתחשב בכך שבינארית כל כך מהותית לקיומם של מחשבים, זה נראה מוזר שמעולם לא עסקנו בנושא לפני כן - אז היום חשבתי שאביא סקירה קצרה של מה בינארי ... קרא עוד שכתבתי בפעם הקודמת.
מהו מרשם משמרות?
אוגר משמרת פלט, מבחינה טכנית, מקבל נתונים בסדרות ויוצא אותם במקביל. מבחינה מעשית, משמעות הדבר היא שנוכל לשלוח במהירות חבורה של פקודות פלט לשבב, לומר לו שיפעל, והיציאות יישלחו לפינים הרלוונטיים. במקום לעבור דרך כל סיכה, אנו פשוט שולחים את הפלט הנדרש לכל הפינים בבת אחת, כבית בודד או יותר של מידע.
אם זה עוזר לך להבין, אתה יכול לחשוב על מרשם משמרות כמערך של תפוקות דיגיטליות, אבל אנחנו יכולים לדלג על הפקודות הרגילות של DigitalWrite ופשוט לשלוח סדרת ביטים כדי להפעיל או כבוי.
איך זה עובד?
מרשם המשמרות בו אנו משתמשים - 74HC595N הכלול בערכת המתנע של Oomlout - זקוק ל -3 סיכות בקרה בלבד. הראשון הוא שעון - אתה לא צריך לדאוג יותר מדי בגלל ששולטות בספריות הסדרתיות של ארדואינו זה - אבל שעון הוא בעצם רק דופק חשמלי פועל / כיבוי שקובע את הקצב לאות הנתונים.
סיכת התפס משמשת כדי להגיד למרשם המשמרות מתי עליו להפעיל ולכבות את תפוקותיו לפי הקטעים ששלחנו זה עתה - כלומר, נועל אותם למקומם.
לבסוף, סיכת הנתונים היא המקום בו שלחנו את הנתונים הסדריים בפועל עם הקטעים כדי לקבוע את מצב ההפעלה / כיבוי של תפוקות מרשם המשמרות.
כל התהליך יכול להיות מתואר בארבעה שלבים:
- הגדר את סיכת הנתונים לגבוהה או נמוכה עבור סיכת הפלט הראשונה במרשם המשמרות.
- דופק את השעון כדי 'להעביר' את הנתונים לפנקס.
- המשך בהגדרת הנתונים ופעימת השעון עד שתגדיר את המצב הנדרש עבור כל סיכות הפלט.
- דופק את סיכת התפס כדי להפעיל את רצף הפלט.
יישום
אתה זקוק לרכיבים הבאים לפרויקט זה:
- שבב רישום משמרת 7HC595N
- 8 נוריות LED ונגדים מתאימים, או כל מה שאליו תרצו לפלט
- קרש הלחם הרגיל, המחברים והארדואינו הבסיסי
אם ברשותך ערכת המתנע של Oomlout, תוכל להוריד את פריסת הלוח הגומה מכאן.
הנה סרטון ההרכבה:
פריסת הלוח:
והגרסה המורכבת שלי:
שיניתי את הקוד המקורי שסופק על ידי Ooolmout, אבל אם תרצה לנסות את זה במקום זאת, ניתן להוריד אותו במלואו כאן. הסבר על הקוד כלול, אז העתק והדבק את כל העניין מלמטה או אודם לקרוא הסבר על הקוד.
/ * * | מדריך רישום Shift, מבוסס על | * | ערכת ניסוי ארדואינו CIRC-05 | * |: 8 נוריות LED נוספות:. (74HC595 משמרת) * * | שונה על ידי ג'יימס @ MakeUseOf.com | * * / // הגדרות סיכה. // 7HC595N כולל שלושה סיכות. נתונים int = 2; // היכן שאנו שולחים את הקטעים לשליטה בתפוקות שעון int = 3; // שומר על סינכרון הנתונים. תפס int = 4; // אומר למרשם המשמרות מתי להפעיל את הגדרת הריק ברצף הפלט () {// הגדר את שלושת סיכות הבקרה לפלט pinMode (נתונים, פלט); pinMode (שעון, פלט); pinMode (תפס, פלט); Serial.begin (9600); // כך שנוכל לשלוח הודעות באגים לצג הסדרתי. } לולאת חלל () {outputBytes (); // הפלט הבסיסי שלנו שכותב 8 סיביות כדי להראות כיצד עובד מרשם משמרות. //outputIntegers(); // שולח ערך שלם כנתונים במקום בתים, ובאופן ספירה בינארית. } מספרים של חללים ריקים () {עבור (int i = 0; i <256; i ++) {digitalWrite (תפס, נמוך); Serial.println (i); // ניפוי באגים, שליחת פלט למסך הסיבוב של המסך הסידורי (נתונים, שעון, MSBFIRST, i); digitalWrite (תפס, גבוה); עיכוב (100); }} output voytBytes () {/ * ביטים, או 8 סיביות, מיוצגים על ידי B ואחריהם 8 0 או 1s. במקרה זה, שקול שזה כמו מערך שנשתמש בו כדי לשלוט על 8 נוריות ה- LED. כאן התחלתי את הערך בתים כ- 00000001 * / byte dataValues = B00000001; // לשנות את זה כדי להתאים את דפוס ההתחלה / * בלולאת for, אנו מתחילים במשיכת התפס נמוך, בעזרת הפונקציה shiftOut Arduino ל דברו אל פנקס המשמרות, שלחו אליו את בתא הנתונים שלנו הערכים המייצגים את מצב הנוריות ואז משכו את התפס גבוה כדי לנעול אותם לתוכו מקום. לבסוף, אנו מעבירים את הקטעים למקום אחד שמאלה, כלומר האיטציה הבאה תדליק את הלד הבא בסדרה. כדי לראות את הערך הבינארי המדויק שנשלח, בדוק את המסך הסידורי. * / עבור (int i = 0; i <8; i ++) {digitalWrite (תפס, LOW); Serial.println (dataValues, BIN); // ניפוי באגים, שליחת פלט למסך הטרי shift Out (נתונים, שעון, MSBFIRST, dataValues); digitalWrite (תפס, גבוה); dataValues = dataValues << 1; // העבר את החלקים למקום אחד שמאלה - שנה ל >> כדי להתאים את השהיית הכיוון (100); } }
העברת סיביות (פונקצית OutputBytes)
בדוגמה של הלולאה הראשונה - outputBytes () - הקוד משתמש ברצף של 8 סיביות (בתים) ואז הוא מעביר את כל האיטציה של הלולאה for. חשוב לציין שאם אתם מתקדמים רחוק יותר ממה שאפשר, החלק פשוט אבוד.
הסטת סיביות נעשית באמצעות << או >> ואחריה מספר הביטים שברצונכם לעבור.
בדוק את הדוגמה הבאה וודא שאתה מבין מה קורה:
בתים ואל = B00011010. val = val << 3 // B11010000. val = val << 2 // B01000000, איבדנו את הקטעים האחרים האלה! val = val >> 5 // B00000010.
שליחת מספרים שלמים במקום זאת (פונקצית OutIntegers)
אם אתה שולח מספר שלם לפנקס המשמרות במקום בייט, הוא פשוט ימיר את המספר לרצף בייט בינארי. בפונקציה זו (ביטול הקטע בלולאה והעלאה בכדי לראות את האפקט), יש לנו לולאה עבור הספירה בין 0-255 (המספר השלם הגבוה ביותר שאנו יכולים לייצג עם בייט אחד), ושולח זאת במקום זאת. בעיקרון זה נחשב בבינארי, כך שהרצף אולי נראה מעט אקראי אלא אם כן נוריות ה- LED שלך מונחות בתור ארוך.
לדוגמה, אם תקרא את המאמר שהוסבר בינארי, תדע שהמספר 44 ייוצג כ- 00101100, אז נוריות LED 3,5,6 הולכות להידלק בנקודה זו ברצף.
דייזי שרשור יותר מפנקס משמרות אחד
הדבר המדהים ברישומי Shift הוא שאם יינתנו להם יותר מ- 8 סיביות של מידע (או ככל שיהיה המרשם הגדול שלהם), הם ישובו את שאר הסיביות הנוספות החוצה. משמעות הדבר היא שאתה יכול לחבר סדרה מהן יחד, לדחוף שרשרת אחת ארוכה של פיסות ולהפיץ אותה לכל פנקס בנפרד, והכל ללא קידוד נוסף מצידך.
למרות שלא נפרט כאן את התהליך או הסכימות, אם יש לך יותר ממרשם משמרות אחד אתה יכול לנסות את הפרויקט מאתר הרשמי Arduino כאן.
מאמרים אחרים בסדרה:
- מה אתה Arduino ומה אתה יכול לעשות עם זה מה זה ארדואינו ומה אתה יכול לעשות עם זה?הארדואינו הוא מכשיר אלקטרוניקה קטן ומדהים, אבל אם מעולם לא השתמשת במכשיר כזה לפני כן, מה בדיוק הם ומה אתה יכול לעשות עם מכשיר אחד? קרא עוד ?
- מהי ערכת Starter Arduino ומה היא מכילה? מה כלול בערכת Starter Arduino? [MakeUseOf מסביר]הצגתי בעבר את חומרת המקור הפתוח של Arduino כאן ב- MakeUseOf, אבל אתה זקוק ליותר מסתם הארדואינו בפועל כדי לבנות מזה משהו ולמעשה להתחיל. ערכות המתנע של ארדואינו הן ... קרא עוד
- רכיבים מגניבים יותר לקנות עם ערכת המתחילים שלך 8 רכיבים מגניבים יותר לפרויקטים של Arduino שלךאז אתם חושבים להשיג ערכת מתנע של ארדואינו, אבל תוהה אם כמה נוריות LED ונגדים בסיסיים הולכים להספיק בכדי להעסיק אתכם לסוף השבוע? כנראה שלא. הנה עוד 8 ... קרא עוד
- התחלת העבודה עם ערכת המתחילים Arduino שלך? התקנת דרייברים והגדרת הלוח והיציאה תחילת העבודה עם ערכת Starter Arduino שלך - התקנת דרייברים והגדרת הלוח והיציאהאז קנית לעצמך ערכת מתנע של ארדואינו, ואולי גם כמה רכיבים מגניבים אקראיים אחרים - מה עכשיו? איך בעצם מתחילים עם תכנות הדבר הארדואינו הזה? איך אתה מגדיר את זה ... קרא עוד
- Fritzing, כלי חינמי לציור דיאגרמות מעגלים Fritzing - הכלי האולטימטיבי לשרטוט פרויקטים אלקטרוניים [פלטפורמה חוצה]למרות שנשמע כמו אלקופופ, Fritzing הוא למעשה קטע מדהים של תוכנה חופשית שתוכלו להשתמש בהם כדי ליצור דיאגרמות מעגלים ורכיבים לשימוש עם לוחות אלקטרוניקה המהווים טיפוס מהיר כגון קוד פתוח נפלא ארדואינו ... קרא עוד
- מבט מקרוב על מבנה אפליקציית ארדואינו והתכנית להבהב לדוגמה הצעדים הראשונים עם הארדואינו: מבט מקרוב על לוח המעגלים ומבנה התוכניתבפעם האחרונה שעזבתי אותך לאחר שהגדרת את הארדואינו שלך לעבוד עם מק או חלונות, והעלית אפליקציית בדיקה פשוטה שהבהבה את נורית הלוח. היום אני הולך להסביר את הקוד ... קרא עוד
- פרויקט אורות עץ חג המולד ארדואינו פרויקט ארדואינו: איך להכין קישוטים לאורות חג המולד נוצציםזה החלק הבא בסדרת ארדואינו הלמידה שלנו, והפעם נלמד אודות המערכים ומשתמשים בהם בכדי ליצור קישוטים קטנים לעץ חג המולד עם רצפים מהבהבים שונים. זה יהיה ... קרא עוד (AKA לומד על מערכים)
- מה זה בינארי? מה זה בינארי? [הסביר טכנולוגיה]בהתחשב בכך שבינארית כל כך מהותית לקיומם של מחשבים, זה נראה מוזר שמעולם לא עסקנו בנושא לפני כן - אז היום חשבתי שאביא סקירה קצרה של מה בינארי ... קרא עוד
זה רחוק ככל שנשלים עם רישומי משמרות היום, לפי דעתי שסיקרנו הרבה. כתמיד, הייתי ממליץ לך לשחק ולהתאים את הקוד ולהרגיש חופשי לשאול כל שאלה שיש לך בתגובות, או אפילו לשתף קישור לפרויקט מבוסס מרשם המשמרות המדהים שלך.
ג'יימס הוא בעל תואר ראשון בבינה מלאכותית, והוא מוסמך CompTIA A + ו- Network +. הוא המפתח הראשי של MakeUseOf, ומבלה את זמנו הפנוי במשחקי פיינטבול VR ומשחקי לוח. הוא בנה מחשבים אישיים מאז שהיה ילד.