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

הדרכה להרכבת AVR 9: 7 שלבים
הדרכה להרכבת AVR 9: 7 שלבים

וִידֵאוֹ: הדרכה להרכבת AVR 9: 7 שלבים

וִידֵאוֹ: הדרכה להרכבת AVR 9: 7 שלבים
וִידֵאוֹ: MKS SGEN L V1.0 - Optical Endstop 2024, נוֹבֶמבֶּר
Anonim
הדרכה להרכבת AVR 9
הדרכה להרכבת AVR 9

ברוכים הבאים לשיעור 9.

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

אנו נשתמש בלוח המקשים שלנו מהדרכה 7

כדי לבצע הדרכה זו, בנוסף לדברים הסטנדרטיים, תזדקק ל:

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

    www.sparkfun.com/products/8546

  2. תצוגה בת 4 ספרות

    www.sparkfun.com/products/11407

  3. כפתור לחיצה

    www.sparkfun.com/products/97

  4. גליונות הנתונים לתצוגה אותם ניתן להוריד מהדפים המתאימים שלהם המקושרים לעיל.
  5. קבל קרמיקה 68 pf, כמה 104 קבלים, חבורה של נגדים, שני טרנזיסטורים 2N3904 NPN.

להלן קישור לאוסף השלם של מדריכי הרכבת AVR שלי:

שלב 1: חיווט תצוגה בת 7 מגזרים

חיווט תצוגה בת 7 מגזרים
חיווט תצוגה בת 7 מגזרים
חיווט תצוגה בת 7 מגזרים
חיווט תצוגה בת 7 מגזרים
חיווט תצוגה בת 7 מגזרים
חיווט תצוגה בת 7 מגזרים

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

נמפה את הקטעים לפינים של המיקרו -בקר שלנו באופן הבא:

(dp, g, f, e, d, c, b, a) = (PD7, PD6, PB5, PB4, PB3, PB2, PB1, PB0)

כאשר האותיות של הקטעים מוצגות בתמונה יחד עם הסיכה המתאימה ל- 5V משותף וכל אחד מקטעי ה- LED כולל הנקודה העשרונית (dp) בפינה הימנית התחתונה של התצוגה. הסיבה לכך היא כדי שנוכל להזין את המספר כולו לרשם יחיד ולפלט שנרשמים ליציאות B ו- D כדי להאיר את הקטעים. כפי שאתה יכול לראות הסיביות ממוספרות ברצף מ -0 עד 7 וכך הן ימפות לפינים הנכונים ללא צורך להגדיר ולנקות סיביות בודדות.

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

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

התבונן תחילה בגיליון הנתונים ושם לב כי בעמוד הראשון הוא נותן מאפיינים שונים של התצוגה. הכמויות החשובות הן "זרם קדימה" (I_f = 20mA) ו- "מתח קדימה" (V_f = 2.2V). אלה אומרים לך שהירידה במתח על פני התצוגה תהיה אם הזרם שווה לזרם קדימה. זהו הזרם המקסימלי שהתצוגה תיקח מבלי לטגן. כתוצאה מכך היא גם הבהירות המרבית שתוכל להוציא מהקטעים.

אז בואו נשתמש בחוק אוהם ובכלל הלולאה של קירצ'וף כדי להבין איזו התנגדות מינימלית נצטרך לשים בסדרה עם התצוגה כדי לקבל את הבהירות המרבית. חוק קירכוף אומר כי סכום המתח משתנה סביב לולאה סגורה במעגל שווה לאפס וחוק אוהם אומר שירידת המתח על פני הנגד של התנגדות R היא: V = I R כאשר I הוא הזרם הזורם בנגד.

אז בהתחשב במתח המקור של V ובהסתובבות במעגל שלנו יש לנו:

V - V_f - I R = 0

כלומר (V - V_f)/I = R. כך שההתנגדות הדרושה כדי לקבל את הבהירות המרבית (וכנראה טיגון הקטעים) תהיה:

R = (V - V_f)/I_f = (5.0V - 2.2V) /0.02A = 140 אוהם

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

שלב 2: קוד הרכבה ווידאו

צירפתי את קוד ההרכבה וסרטון המציג את פעולת לוח המקשים עם הצג. כפי שאתה יכול לראות פשוט מיפנו את מקש החיוג החוזר ל- "r", את מקש ההבזק ל- "F", הכוכבית ל- "A" ואת סימן ה- hash ל- "H". אלה יכולים להיות ממופים לפעולות שונות כמו backspace, enter, ומה לא אם אתה רוצה להמשיך להשתמש בלוח המקשים להקלדת מספרים בתצוגות LCD או בתצוגות בת 4 ספרות. הפעם לא אעבור על הקוד שורה אחר שורה מכיוון שהוא דומה מאוד למה שכבר עשינו במדריכים קודמים. ההבדלים הם בעיקר רק אותם דברים שאנחנו כבר יודעים לעשות כמו הפרעות וטבלאות חיפוש. אתה פשוט צריך לעבור על הקוד ולבדוק את הדברים החדשים שהוספנו ואת הדברים ששינינו ולברר משם. נחזור לניתוח שורה אחר שורה במדריך הבא כאשר נציג היבטים חדשים של קידוד שפת הרכבה על מיקרו-בקרי AVR.

בואו נסתכל כעת על תצוגה בת 4 ספרות.

שלב 3: חיווט הצג בן 4 הספרות

חיווט תצוגה בת 4 ספרות
חיווט תצוגה בת 4 ספרות
חיווט תצוגה בת 4 ספרות
חיווט תצוגה בת 4 ספרות

על פי גליון הנתונים, לתצוגה בת 4 הספרות יש זרם קדימה של 60 mA ומתח קדימה של 2.2 וולט. אז, לפי אותו חישוב כמו קודם, אוכל להשתמש בנגד 47 אוהם אם ארצה. במקום זאת אני הולך להשתמש ב … hrm.. תן לי לראות … מה דעתך על 330 אוהם.

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

לעת עתה, בואו נבדוק שהקטעים כולם עובדים.

מקם את הנגד של 330 אוהם בין המעקה החיובי של לוח הלחם לאנודה הראשונה בתצוגה. גיליון הנתונים מספר לנו שהסיכות ממוספרות מ -1 עד 16 נגד כיוון השעון, מתחילות בפינה השמאלית התחתונה (כאשר אתה מסתכל על הצג כרגיל.. עם הנקודות העשרוניות לאורך התחתונה) והוא מציין כי האנודות הן מספר סיכות 6, 8, 9 ו -12.

אז אנחנו מחברים את הפין 6 ל -5V ואז לוקחים יתרון שלילי ממעקה ה- GND שלך ומכניסים אותו לכל הפינים האחרים ורואים שכל הקטעים נדלקים על הספרה שאליה היא מתאימה (שהיא למעשה הספרה השנייה מ הנכון). הקפד לקבל את כל 7 הקטעים ואת הנקודה העשרונית כדי להאיר.

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

משהו יוצא דופן?

מתברר שהסימון בגליון הנתונים שגוי. הסיבה לכך היא שזהו גליון הנתונים והצמידות לתצוגה בת 12 פינים וארבע ספרות. כְּלוֹמַר. אחד ללא נקודתיים או נקודה עשרונית עליונה. התצוגה שקיבלתי כשהזמנתי היא צג בן 16 פינים וארבע ספרות. למעשה, בשלי, האנודות של הקטע נמצאות בפינים 1, 2, 6 ו -8. אנודת המעי הגס היא סיכה 4 (סיכת קתודה 12) ואנודת ה- dp העליונה היא סיכה 10 (הקתודה היא סיכה 9)

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

הדרך בה אנו רוצים לקודד את מפת הקטע היא בדיוק כפי שעשינו עם התצוגה החד-ספרתית בת 7 המקטעים למעלה-איננו צריכים לשנות דבר בקוד, הדבר היחיד שאנו משנים הוא אופן חיבור החוטים. על הלוח. כל שעליך לעשות הוא לחבר את סיכת היציאה הנכונה במיקרו-בקר לסיכה המתאימה בתצוגה בת 4 הספרות, כך למשל, PB0 עדיין יגיע לפין המתאימה לקטע a, PB1 עובר לפלח B וכו '.

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

אז נשתמש ב- PC1, PC2, PC3 ו- PD4 לשליטה על האנודות של ארבע הספרות.

כדאי שתמשיך ותחבר את החוטים. (אל תשכח את נגדי 330 אוהם בחוטי האנודה!)

שלב 4: קידוד התצוגה בת 4 הספרות

קידוד התצוגה בת 4 הספרות
קידוד התצוגה בת 4 הספרות

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

אנו רוצים שהמשתמש ילחץ על לחצני לוח המקשים והמספרים יופיעו ברצף על המסך כשהם לוחצים על כל כפתור. אז אם אני לוחץ על 1 ואחריו 2 הוא יופיע בתצוגה כ 12. אני גם רוצה לאחסן את הערך הזה, 12, לשימוש פנימי אבל נגיע לזה קצת יותר מאוחר. לעת עתה אני רק רוצה לכתוב מאקרו חדש שלוקח את הלחיצות שלך ומציג אותן. עם זאת, מכיוון שיש לנו רק 4 ספרות אני רוצה לוודא שהוא מאפשר לך להקליד רק ארבעה מספרים.

סוגיה נוספת היא שהדרך שבה פועלת התצוגה בת 4 הספרות היא על ידי רכיבה על האנודות כך שכל ספרה דולקת רק לשבריר שנייה לפני שהיא מציגה את הבא ואז את הבאה ולבסוף חוזרת לראשונה שוב וכו '. אז אנחנו צריך דרך לקודד את זה.

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

נשמע כמו צו גבוה?

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

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

שלב 5: Push 'n Pop

Push 'n Pop
Push 'n Pop

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

דוגמה תעזור להבהיר זאת יותר.

שים לב כי בהפסקת ההמרה האנלוגית לדיגיטלית ADC_int אנו משתמשים ברשם למטרות כלליות ששמנו את buttonH, בו השתמשנו כדי לטעון את הערך של ADCH ולהשוות אותו עם טבלת החיפוש שלנו של המרות אנלוגיות ללחיצת כפתורים. אנו משתמשים רק בכפתור זה H הרשמה בתוך תת -התוכנית ADC_int ובשום מקום אחר. אז במקום זאת נשתמש במשתנה temp2 שלנו שבו אנו משתמשים כמשתנה זמני שנוכל להשתמש בו בתוך כל תת -שגרת נתונה והערך שלו לא ישפיע על שום דבר מחוץ לשגרת המשנה הזו (כלומר, הערך שאנו נותנים לו ב- ADC_int לא ישמש בשום מקום אַחֵר).

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

התוצאה נטו היא ש"שאלנו "טמפ 'וטמפ 2 לשימוש זמני ולאחר מכן החזרנו אותם לערכים הקודמים שלהם כשנסיים.

להלן שגרת ההפסקה של ADC_int לאחר ביצוע שינוי זה:

ADC_int:

דחיפת טמפ '; שמור זמני מכיוון שאנו משנים זאת כאן דחוף את temp2; שמור temp2 lds temp2, ADCH; לחץ על מקש ldi ZH, גבוה (2*מספרים) ldi ZL, נמוך (2*מספרים) cpi temp2, 0 breq return; אם גורמי הרעש אינם משתנים מקש ערכת 7 מספרים: lpm temp, Z+; טעינה מהטבלה והוספת תוספת clc cp temp2, temp; להשוות לוח מקשים עם השולחן brlo PC+4; אם ADCH נמוך יותר, נסה שוב lpm 7segnumber, Z; אחרת טען ספרת ערך ערך מפתח inc inc; להגדיל את החזרה למספר הספרות rjmp; וחזור adiw ZH: ZL, 1; תוספת Z rjmp setkey; וחזור לראש החזרה: pop temp2; שחזור temp2 pop temp; שחזר זמני reti

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

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

שלב 6: מסננים במעבר נמוך ומגבר מתח

מסננים ומגבר מתח נמוך
מסננים ומגבר מתח נמוך
מסננים ומגבר מתח נמוך
מסננים ומגבר מתח נמוך

על מנת לנקות מעט את הרעש ולגרום ללוח המקשים שלנו לפעול טוב יותר, אנו רוצים להוסיף כמה מסננים נמוכים. אלה מסננים את רעשי התדר הגבוה ומאפשרים לאות בתדר נמוך לעבור. בעצם הדרך לעשות זאת היא פשוט להוסיף קבל 68 pf בין הכניסה האנלוגית שלנו לקרקע וגם קבל 0.1 microfarad (כלומר 104) בין הפרעה PD4 (INT0) שלנו לבין הקרקע. אם תשחק עם אלה תוך לחיצת כפתורים בלוח המקשים תוכל לראות מה הם עושים.

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

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

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

אם תסתכל על התרשים שצירפתי לשלב זה תראה כיצד מגבר המתח יעבוד. אנו משתמשים בכמה נגדים ושני טרנזיסטורים. הדרך שבה הטרנזיסטורים פועלים (עיינו בדפי הנתונים!) היא שיש מתח מינימלי שעליך להזין לפין הבסיס על הטרנזיסטור (הסיכה האמצעית) אשר ירווה אותו ויאפשר לזרום זרם בין סיכת האספן לפולט. פִּין. במקרה של הטרנזיסטור 2N3904 בו אנו משתמשים כאן המתח הוא 0.65V. עכשיו אנחנו לוקחים את המתח הזה מהפלט שלנו ממקלדת המקשים ואנחנו לא רוצים לשנות את הפלט אז נניח נגד גדול בין הפלט ממקלדת לבין הבסיס של הטרנזיסטור הראשון (השתמשתי ב- 1Mohm). סימנתי את זה כ- R_1 בתרשים. לאחר מכן אנו רוצים להקים מחלק מתח כך שבסיס הטרנזיסטור יהיה "כמעט" ב -0.65 וולט כבר ורק עוד קצת יותר קטן ידחוף אותו למעלה וירווי אותו. החלק הזעיר הזה יגיע מפלט לוח המקשים כאשר נלחץ על כפתור. מכיוון שהמקשים התחתונים בלוח המקשים מוציאים רק מתח זעיר עלינו להיות קרובים מאוד לרוויה כבר כדי שהם יספיקו. מתגי המחלקים למתח מסומנים בתרשים R_a ו- R_b. השתמשתי ב- R_a = 1Mohm ו- R_b = 560Kohm אבל כמעט בטוח שתצטרך לשחק עם המספרים האלה כדי להתאים אותו להתקנה שלך.אולי תרצה שיהיה לך קיר בקרבת מקום כדי לדפוק את הראש ושתיים או שלוש כוסות סקוטש בהישג יד (הייתי ממליץ על לפרואיג - יקר, אבל שווה את זה אם אתה אוהב עשן. אם הדברים נהיים ממש מטורפים, אז פשוט קח כד. של BV ולהסתפק בלילה)

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

עכשיו מה קורה כשאני לוחץ על מקש? ובכן אז הבסיס של T1 עולה מעל 0.65V (במקרה של המקשים התחתונים הוא רק בקושי עולה!) ואז יורשה הזרם לזרום מה שימשוך את בסיס T2 למתח נמוך וזה יכבה את T2. אבל אנו רואים שכאשר T2 כבוי, אז הפלט נמשך גבוה ומכאן נקבל אות 5V העובר לפין INT0 שלנו וזה יגרום להפסקה.

שימו לב מה התוצאה נטו כאן. אם אנו לוחצים על המקש 1, אנו מקבלים 5V ל PD4 מבלי לשנות באופן משמעותי את הפלט העובר ל- ADC0, וחשוב מכך, גם אם אנו לוחצים על כוכבית, 0, Hash או חיוג חוזר, אנו מקבלים גם אות 5V העובר ל- INT0 וגם גורם להפרעה! זה חשוב מכיוון שאם רק היינו עוברים ישירות מפלט המקלדת אל סיכת INT0, המפתחות האלה כמעט ולא יוצרים מתח והם לא יספיקו להפעלת הסיכה ההפרעה. מגבר המתח שלנו פתר את הבעיה הזו.

שלב 7: קוד תצוגה וסרטון בן 4 ספרות

זה הכל להדרכה 9! צירפתי את הקוד וסרטון המציג את הפעולה.

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

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

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

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

פרויקט: הכינו מחשבון! השתמש בתצוגה של 4 ספרות ולוח המקשים שלנו והוסף לחיצת כפתור חיצונית שתפעל כמו מקש "enter". מפה את הכוכבית ל"זמנים ", החשיש ל"חלק" את החיוג החוזר ל"פלוס "והבזק ל"מינוס" וכתוב שגרת מחשבון המתנהגת כמו אחד מאותם מחשבוני "פולנית הפוכה" הישנים של כל המהנדסים. בזמנו. כְּלוֹמַר. הדרך שבה הם עובדים היא שאתה מזין מספר ולחץ על "enter". זה דוחף את המספר הזה לערימה, ואז אתה מזין מספר שני ולוחץ על "enter", מה שדוחף את המספר השני לערימה. לבסוף אתה לוחץ על אחת מהפעולות כמו X, /, + או - והיא תחיל את הפעולה על שני המספרים העליונים בערימה, תציג את התוצאה ותדחוף את התוצאה על הערימה כך שתוכל להשתמש בה שוב אם אתה כמו. למשל כדי להוסיף 2+3 היית עושה: 2, "הזן", 3, "הזן", "+" והתצוגה לאחר מכן תקרא 5. אתה יודע כיצד להשתמש בערימה, בתצוגה, בלוח המקשים, ואתה האם רוב קוד הרקע כבר נכתב. פשוט הוסף את מקש enter ואת שורות המשנה הדרושות למחשבון. זה קצת יותר מסובך ממה שאתה יכול לחשוב בהתחלה, אבל זה כיף וניתן לביצוע.

נתראה בפעם הבאה!

מוּמלָץ: