במדריך זה אנו מציגים את הרעיון של ADC (אנלוגי להמרה דיגיטלית) ב- ARDUINO UNO. ללוח Arduino יש שישה ערוצי ADC, כפי שמוצג באיור להלן. בין אלה כל אחד מהם או כולם יכולים לשמש ככניסות למתח אנלוגי. ה- Arduino Uno ADC הוא ברזולוציה של 10 סיביות (כך שהערכים השלמים מ (0- (2 ^ 10) 1023)). המשמעות היא שהיא תמפה את מתח הכניסה בין 0 ל -5 וולט לערכים שלמים בין 0 ל 1023. כך לגבי כל (5/1024 = 4.9mV) ליחידה.
בתוך כל זה אנו הולכים לחבר פוטנציומטר או סיר לערוץ 'A0', ונציג את תוצאת ה- ADC בתצוגה פשוטה. התצוגות הפשוטות הן יחידות תצוגה 16x1 ו- 16x2. יחידת התצוגה 16x1 תכלול 16 תווים והיא בשורה אחת. 16x2 יהיה 32 תווים בסה"כ 16in 1 st קו 16 עוד 2 nd קו. כאן חייבים להבין שבכל תו ישנם 5x10 = 50 פיקסלים אז כדי להציג תו אחד כל 50 הפיקסלים חייבים לעבוד יחד, אבל אנחנו לא צריכים לדאוג לזה כי יש בקר אחר (HD44780) ביחידת התצוגה שעושה את עבודה של שליטה בפיקסלים (אתה יכול לראות את זה ביחידת LCD, זה העין השחורה מאחור).
רכיבים נדרשים
חומרה: ARDUINO UNO, ספק כוח (5v), JHD_162ALCD (16x2LCD), קבלים 100uF, סיר 100KΩ או פוטנציומטר, קבלים 100nF.
תוכנה: arduino IDE (Arduino nightly)
תרשים מעגל והסבר
ב LCD 16x2 יש 16 פינים בכל מקום אם יש תאורה אחורית, אם אין אור אחורי יהיו 14 פינים. אפשר להפעיל או להשאיר את סיכות התאורה האחורית. עכשיו ב- 14 הסיכות ישנם 8 פיני נתונים (7-14 או D0-D7), 2 סיכות אספקת חשמל (1 & 2 או VSS & VDD או GND & + 5V), 3 rd סיכה לבקרת ניגודיות (VEE-שולט כמה עבה הדמויות צריכות להיות מוצג), ו -3 סיכות בקרה (RS & RW & E).
במעגל, תוכלו לראות שלקחתי רק שני סיכות שליטה, מעט הניגודיות ו- READ / WRITE לא משמשים לעתים קרובות, כך שניתן לקצר אותם לקרקע. זה מכניס את LCD למצב הניגודיות והקריאה הגבוה ביותר. אנחנו רק צריכים לשלוט בסיכות ENABLE ו- RS כדי לשלוח תווים ונתונים בהתאם.
החיבורים שבוצעו עבור LCD מובאים להלן:
PIN1 או VSS לקרקע
PIN2 או VDD או VCC ל- + 5v כוח
PIN3 או VEE לקרקע (נותן ניגודיות מרבית הטובה ביותר למתחילים)
PIN4 או RS (בחירת רישום) ל- PIN8 של ARDUINO UNO
PIN5 או RW (קריאה / כתיבה) לקרקע (מכניס את LCD למצב קריאה מקל על התקשורת עבור המשתמש)
PIN6 או E (אפשר) ל- PIN9 של ARDUINO UNO
PIN11 או D4 ל- PIN10 של ARDUINO UNO
PIN12 או D5 ל- PIN11 של ARDUINO UNO
PIN13 או D6 ל- PIN12 של ARDUINO UNO
PIN14 או D7 ל- PIN13 של ARDUINO UNO
ה- ARDUINO IDE מאפשר למשתמש להשתמש ב- LCD במצב 4 סיביות. סוג זה של תקשורת מאפשר למשתמש להפחית את השימוש בסיכה ב- ARDUINO, בניגוד לאחרים, אין צורך לתכנת בנפרד את ARDUINO לשימוש בו במצב 4 it מכיוון שברירת המחדל ה- ARDUINO מוגדר לתקשר במצב 4 סיביות. במעגל ניתן לראות שהשתמשנו בתקשורת 4 ביט (D4-D7).
אז מעצם התבוננות מהטבלה לעיל אנו מחברים 6 פינים של LCD לבקר בהם 4 פינים הם פינים של נתונים ו -2 פינים לבקרה.
האיור לעיל מציג את תרשים המעגל c של ADC של ARDUINO UNO.
עובד
כדי להתממשק LCD ל- ARDUINO UNO, עלינו לדעת כמה דברים.
|
ראשית לערוצי UNO ADC יש ערך הפניה ברירת מחדל של 5V. זה אומר שאנחנו יכולים לתת מתח כניסה מרבי של 5V להמרת ADC בכל ערוץ קלט. מכיוון שחיישנים מסוימים מספקים מתח מ -0-2.5 וולט, עם הפניה של 5 וולט אנו מקבלים דיוק נמוך יותר, כך שיש לנו הוראות המאפשרות לנו לשנות את ערך הייחוס הזה. אז לשינוי ערך הייחוס שיש לנו ("analogReference ();")
כברירת מחדל אנו מקבלים את רזולוציית ה- ADC המקסימלית בלוח שהיא 10 ביט, ניתן לשנות את הרזולוציה הזו באמצעות הוראות ("analogReadResolution (bits);"). שינוי ברזולוציה זה יכול להיות שימושי במקרים מסוימים.
כעת אם התנאים שלמעלה מוגדרים כברירת מחדל, אנו יכולים לקרוא את הערך מ- ADC של הערוץ '0' על ידי קריאה ישירה לפונקציה "analogRead (pin);", כאן "pin" מייצג את הפין שבו חיברנו אות אנלוגי, במקרה זה זה היה להיות "A0". ניתן לקחת את הערך מ- ADC למספר שלם כ- “int ADCVALUE = analogRead (A0); ", לפי הוראה זו הערך לאחר ADC נשמר במספר השלם" ADCVALUE ".
עכשיו בואו נדבר קצת על 16x2 LCD. ראשית עלינו לאפשר את קובץ הכותרת ('#include
שנית עלינו לספר ללוח באיזה סוג LCD אנו משתמשים כאן. מכיוון שיש לנו כל כך הרבה סוגים שונים של LCD (כמו 20x4, 16x2, 16x1 וכו '). כאן אנו הולכים להתממשק LCD 16x2 ל- UNO כך שנקבל 'lcd.begin (16, 2);'. עבור 16x1 אנו מקבלים 'lcd.begin (16, 1);'.
בהוראה זו אנו הולכים לספר ללוח היכן חיברנו את הפינים, הפינים המחוברים מיוצגים בסדר "RS, En, D4, D5, D6, D7". יש לייצג נכון סיכות אלה. מכיוון שחיברנו את ה- RS ל- PIN0 וכן הלאה, כפי שמוצג בתרשים המעגל, אנו מייצגים את מספר הסיכה שעל הלוח הוא "LiquidCrystal lcd (0, 1, 8, 9, 10, 11);".
אחרי שלמעלה שם כל שנותר הוא לשלוח נתונים, הנתונים שצריכים להיות מוצגים ב- LCD צריכים להיות כתובים כ- "cd.print (" שלום, עולם! ");". עם פקודה זו LCD מציג 'שלום, עולם!'.
כפי שאתה יכול לראות אנחנו לא צריכים לדאוג לשום דבר אחר, אנחנו רק צריכים לבצע אתחול וה- UNO יהיה מוכן להציג נתונים. אנחנו לא צריכים לכתוב לולאת תוכנה כדי לשלוח את הנתונים BYTE על ידי BYTE לכאן.
השימוש ב- ADC של Arduino Uno מוסבר שלב אחר שלב בתוכנית C המפורטת להלן.