שְׁאֵלָה:
כיצד אוכל להשתמש בשני LCD I2C עם 4 פינים?
Konstantinos
2015-05-28 03:57:56 UTC
view on stackexchange narkive permalink

יש לי שני מסכי LCD I2C:

  • אחד עם 2 שורות
  • אחד עם 4 שורות.

לשניהם 4 מצמיד כל אחד: GND , VCC , SDA , SDL . אני מחבר SDA ו- SDL ל A4 ו- A5 בהתאמה, ומציג טקסט על כל אחד מהם עם:

  #include <Wire.h> # include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd (0x27,16,4);  

אבל איך אני יכול להשתמש בשניהם ב באותו זמן? , אבל כנראה שאני צריך לספק את הכתובת הנכונה עבורם (כמו 0x27 ), נכון?

עם זאת, בזמן ששניהם מחוברים, באמצעות I2C_Scanner מוצג רק מכשיר אחד:

  סריקה ... מכשיר I2C נמצא בכתובת 0x27! נעשה 

מה חסר לי?

שְׁלוֹשָׁה תשובות:
SDsolar
2016-12-12 10:23:27 UTC
view on stackexchange narkive permalink

עם תרמיל I2C ישנם שלושה זוגות נחיתות, A0, A1, A2, הקובעים את ה- 3 LSB של כתובת המכשיר, תוך שימוש בינארי הפוך.

נשאר לבד , הם מייצרים חלק מה- F או 7 מהכתובת. 0x3F נפוץ, וכך גם 0x27.

כדי להשתמש ביותר ממכשיר אחד יש צורך לקפוץ את כולם באופן ייחודי.

הסיביות העליונות המייצרות את 0x3 הם קווית. כך גם החלק הגבוה ביותר של הבית התחתון. ניתן לשנות רק את שלושת הסיביות בסדר הנמוך ביותר.

מכיוון שסיביות הכתובת הללו הפוכות, הקפצה על ה- A0 תגרע 1 מהכתובת. 0x3F יהפוך ל- 0x3E, 7 יהפוך ל- 6.

יש לך שליטה מספקת בכדי להכין עד 7 מודולי LCD באותו אוטובוס I2C.

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

יש שאלות על הימנעות ואיתור התנגשות I2C ב- http://RaspberryPi.StackExchange.com אם זה המצב שלך.

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

חוטו את חוטי SDA ו- SCL של צגי ה- LCD במקביל ול סיכות SDA ו- SCL בארדואינו, בדרך כלל A4 ו- A5. (אני תמיד מתחיל עם קרש לחם בשביל זה). ודא שיש נגדי משיכה בדידים (10K נפוץ) בכל אחד מהם, במקום אחד בלבד באוטובוס.

אם יש לך מודול DS3231 RTC במערכת, אינך צריך להוסיף משיכה. -קופצים כי יש להם אותם באופן פנימי.

אם LCD אחד כבר עובד אז אתה יודע שיש לך מתח משיכה מתאים באוטובוס. (האותות מועברים למצב הקרקע לשליחת נתונים באוטובוס I2C)

אז, לסיכום:

אם יש לך שני מסכי LCD במערכת שלך תוכל להשתמש במודולי LCD ש כבר מגיעים עם כתובות שונות, כמו

  LiquidCrystal_I2C lcd1 (0x27, ....);  

לראשונה, ואז

  LiquidCrystal_I2C lcd2 (0x3F, .....);  

עבור השני.

שים לב שהפרמטרים להגדרות אלה הם

  LiquidCrystal_I2C lcdname (addr, en, rw, rs, d4, d5, d6, d7, bl, blpol);  

0x27 ו- 0x3F הן כתובות המניות הנפוצות ביותר ו מודולים 0x27 מתקשים למצוא.

אם יש לך 0x27 אז זה סביר מאוד שאם אתה קונה חדש יותר זה יהיה 0x3f. הבעיה נפתרה.

d4 ו- d5 בהגדרה מציין את הסיכות לשימוש עבור I2C.

באפשרותך להפעיל את תוכנית i2cscanner כדי לראות מה היא מוצאת, לאחר שהם מחוברים יחד. אם אתה רואה שתי כתובות שונות, נניח 0x27 ו- 0x3F, אתה יכול ללכת.

אם רק 2F מופיע, אז אתה רוצה לשקול הלחמה של A0 יחד במודול אחד ואז להפעיל את הסורק שוב כדי לוודא שהוא עובד.

כך אני בדרך כלל עושה את זה כששניהם בוא להגדיר כ- 0x3f:

יש לי צהוב שהוא 0x3F מלאי וכחול שבו קפצתי A0 כדי להפוך אותו ל- 0x3E. שניהם 20 x 4 מציגים.

הנה ההגדרות שלי: (זכור, 4,5 מגדירים סיכות SDA, SCL)

  LiquidCrystal lcdblue ( 0x3e, 2,1,0,4,5,6,7,3, POSITIVE); LiquidCrystal lcdyellow (0x3f, 2,1,0,4,5,6,7,3, POSITIVE);  

ואז בהתקנה () אני משתמש בזה:

  lcdblue.begin (20,4); lcdblue.backlight (); delay (250); lcdblue.nobacklight () ; עיכוב (250); lcdblue.backlight (); lcdyellow.begin (20,4); lcdyellow.backlight (); עיכוב (250); lcdyellow.nobacklight (); עיכוב (250); lcdyellow.backlight ();  

וזה טוב ללכת, להשתמש בסיכה A4 כ- SDA ו- A5 כ- SCL.

אתה יודע שהם עובדים כשהם קורצים לך את התאורה האחורית.

אם אחד משלך הוא 20 x 2, השתמש ב- lcd2.begin (20,2); כמובן.

אם אתה באמת רוצה להשתמש בסיכות אחרות עבור ה- I2C שלך ואז פשוט לשנות את 4,5 בהגדרת LiquidCrystal_I2C לסיכות בהן ברצונך להשתמש. מעולם לא פגשתי מישהו שירצה לעשות זאת.

מקווה שזה יעזור.

Ignacio Vazquez-Abrams
2015-05-28 04:19:31 UTC
view on stackexchange narkive permalink

אינך יכול לחבר התקני I 2 C לסיכות שרירותיות; עליהם להיות מחוברים ל- SDA ו- SCL ולתת להם כתובות שונות, או שעליך להשתמש בתוכנה I 2 C. בדוק כיצד לתת למכשיר השני כתובת אחרת, ואז להתקין LiquidCrystal_I2C אחר עם הכתובת החדשה על מנת שתוכל להשתמש בה.

גיליתי שאני יכול להתחבר ל'A4 ',' A5 'עד 121 מכשירי I2C. אין יציאות אחרות עבור `SDA`,` SCL`. חייבת להיות דרך לשנות את הכתובת, אבל אני לא מוצא אותה. בכמה תצוגות LCD אחרות יש סיכות 'A0', 'A1', 'A2': הקפיצה בהן משנה את כתובתן. עם זאת, בשני התצוגה שלי אין אותם. (מידע בכתובת http://forum.arduino.cc/index.php?topic=158312.0) ימשיך לחפש ...
האם יש לך קישור לדף מוצר?
כן זה זה: http://www.ebay.co.uk/itm/181722213160?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT השני הוא מתוך ערכת Sunfounder ואני לא מוצא קישור ספציפי, רק שזה "I2C LCD 1602".
אל תבזבז את הזמן שלך על זה, אני אבין משהו ואודיע לך. :)
האם אתה יכול לראות מגשרים או נגדים בחלק התחתון של הלוח?
אתה מתכוון כמו C1, C2 בצד ימין או C3-4, R6-8 בפינה השמאלית התחתונה? http://s4.postimg.org/6h8ajc21p/lcd.jpg
על לוח המתאם, לא על התצוגה עצמה.
בלוח מתאם אתה מתכוון לצד השני של הלוח האדום הקטן? ובכן אני לא יכול להסיר אותו כדי לבחון מקרוב, אבל נראה שאין שום דבר מתחתיו.
סיכות 1, 2 ו- 3 בוחרות את כתובת ה- I2C של המכשיר. אם אתה מרים אחד מהם מהלוח ומלחך חוט לקרקע, תוכל לשנות את הכתובת.
אוקי, אני אקבל מלחם ואעשה את זה. אז אני אנתק את אחד מהם וארקה אותו. ואז השתמש ב- I2C Scanner כדי למצוא את הכתובת החדשה. אגב, איך ידעת את זה?
עמוד באינטרנט אמר שרוב המודולים הללו משתמשים ב- PCF8574 (שהתמונה שלך אישרה), ומשם זה רק עניין של קריאת גליון הנתונים.
בהגדרת LiquidCrystal תוכלו לציין את הסיכות לשימוש עבור SDA ו- SCL. תסתכל על התשובה שלי לגבי שינוי כתובות בתרמיל I2C. ניתן לקצר את A0, A1, A2 כדי לשנות את הסיביות הכי פחות משמעותיות של כתובת I2C
ציון הסיכות כמשהו שאינו 'SDA' ו- 'SCL' הגיוני רק אם אכן פועל I2C על אותם סיכות אחרות. מעט מאוד Arduinos מכילים חומרה I2C ביותר מזוג סיכות אחד.
AMADANON Inc.
2015-05-28 08:31:37 UTC
view on stackexchange narkive permalink

יתכן שתוכל לחבר אותם במקביל, אם אתה יכול להחזיק את השעון (SCL) גבוה (אחד בכל פעם).

הכניס דיודה בכדי למנוע שגם השנייה תעלה גבוה.

בחר סיכה רזרבית בארדואינו שלך (אני אשתמש בסיכה דיגיטלית 7 למכשיר A, 8 למכשיר B, אבל לא משנה איזה). כשאתה רוצה לדבר עם מכשיר A, ודא שהסיכה 7 נמצאת במצב עכבה גבוהה, ו- 8 גבוהה. שוחח עם מכשיר A. הפסק לדבר עם מכשיר A. שים את סיכה 8 במצב עכבה גבוהה, ואת סיכה 7 לגבוהה. שוחח עם מכשיר B. שטוף, שוטף, חוזר. כל עוד מכשיר רואה שעונו גבוה, הוא לא יקשיב או ידבר.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...