עבור לתוכן

עזרה בחיבור מספר מסכי 1602 במקביל

Featured Replies

פורסם

קניתי 2 מסכי 1602 מאיביי

קישור למסך, קישור לחיבור הסריאלי.

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

מישהו יכול להסביר לי איך לשנות כתובת למסכים בתוכנה? (בחומרה הלחמתי את A0).

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

תודה מראש לכל העוזרים!!

פורסם

אחרי שהלחמת בחומרה שאת A0

תריץ את הקוד הבא כדי לסרוק את הכתובות ולקבל את הכתובת הנכונה עבור השינוי שביצעת

http://playground.arduino.cc/Main/I2cScanner

שים פה את הקוד שאתה משתמש בו כדי שנראה מה צריך לשנות

פורסם
  • מחבר

זה הקוד הבסיסי..

את הספריה RobotGeekLCD הורדתי מהאתר הזה (נתתי קישור גם לקבצים בהודעה הראשונה).

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

  #include <Wire.h>   // include the RobotGeekLCD library
#include <RobotGeekLCD.h>


// create a robotgeekLCD object named 'lcd'
RobotGeekLCD lcd;


void setup() {
lcd.init();
lcd.print("Uziel!");
}
void loop()
{
}


פורסם

ממה שזה נראה לא ניתן לבחור כתובת בספריה הזו.

תעבוד עם הספריה הזו:

http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C

יש בדוגמאות הסבר כיצד להפעיל יותר ממסך אחד. תשתמש בקישור ש-Blinker צירף כדי למצוא את הכתובות.

פורסם
  • מחבר

אוקיי, קודם כל תודה!

אני יודע עכשיו את הכתובות - 0x26, 0x27.

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

כאילו שהוא מקבל פקודות לפינים הלא מתאימים או משהו כזה..

השאלה אם שייך לשנות את אחת הספריות שתתאים למסך הזה או לשנות בספריה שברשותי שתפנה למסך לפי כתובת...? (או שיש רעיון יותר טוב ואני לא בכיוון (-;)

פורסם

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

הפקודות מדליקות ומכבות את התאורה:

lcd.backlight();
lcd.noBacklight();

בדקתי הרגע עם זה (אמור לעבוד פיקס):

#include <Wire.h>  
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd1(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
LiquidCrystal_I2C lcd2(0x26, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup() {

lcd1.begin(16,2);
lcd2.begin(16,2);

lcd1.backlight();
lcd2.backlight();

lcd1.setCursor(0,0);
lcd1.print("OMG!!! LCD #1");


lcd2.setCursor(0,0);
lcd2.print("OMG!!! LCD #2");

delay(2000);
}

void loop()
{
lcd1.setCursor(0,1);
lcd1.print(millis());


lcd2.setCursor(0,1);
lcd2.print(millis());
}

נערך על-ידי Blinker

פורסם
  • מחבר

תודה רבה! עובד מצויין!

תוכל להסביר לי בקצרה את התהליך שעשית בבדיקה ובפתרון..

אני מבין שהשתמשת בבנאי אחר אבל לפי מה קבעת את מספרי הפינים?

ונראה לי שלא צריך להוסיף את ה ;()lcd.backlight, בפועל התאורה של המסך פועלת גם בלי זה. ובבנאי שהשתמשת כבר הזנת positive...

פורסם

לא שמתי לב לשאלה שלך .. סורי

ובכן הבנאי שהשתמשתי בו הולך ככה :

LiquidCrystal_I2C lcd(Address,EN,RW,RS,D4,D5,D6,D7,Backlight,BacklightPolarity);


Address - היא כמובן כתובת הבקר

EN,RW,RS,D4,D5,D6,D7 - הפינים של המסך בהתאמה

Backlight - הפין שאחראי על התאורה האחורית

BacklightPolarity - קוטביות הלד של התאורה האחורית (פחות בטוח לגבי זה ואיך זה עובד)

הפינים המדוברים הם הP1-P8 של השיפט רג'יסטר שעל הבקר.

במקרה שקונפיגורציה כלשהי לא עובדת לך - אתה פותח DATASHEET של הצ'יפ שיש לך על הבקר

לוקח מולטימטר במצב ציפצוף ורושם לך איזה פין מחובר לאן ואז מאתחל את הבנאי לפי הצורך שלך.

:cool2:

נערך על-ידי Blinker

פורסם
  • מחבר

אחלה, תודה רבה!

ואיך הגעת לזה שהפינים המדוברים הם הP1-P8 של השיפט רג'יסטר שעל הבקר. בגלל שכתוב עליהם I/O?

פורסם

בגלל הצורה שבה עובד השיפט רג'יסטר

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

עם השיפט רג'יסטר אתה חוסך פינים של הארדואינו ובתקשורת סריאלית אתה אומר לשיפט רג'יסטר איך להפעיל את המסך- אז גם לא אתה מגדיר מה כל פין עושה ולאן הוא מחובר .. עם DATASHEET של השיפט רג'יסטר ועם ה WIKI של הספריה אין שום בעיה להגדיר את זה לבד :P

פורסם
  • מחבר

תודה רבה!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים