עבור לתוכן

עזרה בקוד שכתבתי לפרויקט גמר

Featured Replies

פורסם

כתבתי כבר בסביבות ה10 פעמים מחדש את הקוד בכל וריאציה שלו ומשום מה אני לא מצליח להפעיל אותו, ניסיתי לקחת כמה קודים כתובים ולשנות אותם לפי מה שאני צריך(ע"פ סוג המקלדת והLCD שלי) אבל לא הולך לי כ"כ

אני משתמש במקלדת 2 שורות(2X16) מסוג M1632

מקלדת 4X4(זאתי שיש בה גם את A,B,C,D בנוסף למספרים ולסימנים)

ובמפענח מקלדת 74922

אשמח אם מישהו יוכל לענות לי ולעזור לי לתקן את הקוד שלי, הוא עובד כמובן קומפילציה אבל לא פועל, הLCD מציג את השורה הראשונה בה כתוב "קוד:" ובשורה השניה מספרים אקראיים שהם בד"כ שורה של 5 אחדים או 5 פעמים 2, אחרי 10-15 שניות של ההצגה הזאת המסך כל הLCD מתמלא במספר 2 משום מה, כל 2 השורות.

הקוד אמור בסה"כ לקרוא את המקשים שהוקשו במקלדת ולהציג על הLCD.

זה הקוד:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int da = 30;

int d0 = 31;

int d1= 32;

int d2 = 33;

int d3 = 34;

int codes [4][4] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

int thisCol = 0;

void setup (){

pinMode(da,INPUT);

pinMode(d0,INPUT);

pinMode(d1,INPUT);

pinMode(d2,INPUT);

pinMode(d3,INPUT);

lcd.begin(16, 2);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print("Code:");

}

void loop () {

lcd.setCursor(0, 1);

//int res=digitalRead(da);

//if (res==1)

//{

do{

int dds[]={digitalRead(d0),digitalRead(d1),digitalRead(d2),digitalRead(d3)};

switch (dds[3]) {

case 0:

lcd.print('1');

thisCol++;

break;

case 1:

lcd.print('2');

thisCol++;

break;

case 2:

lcd.print('3');

thisCol++;

break;

case 3:

lcd.print('A');

thisCol++;

break;

case 4:

lcd.print('4');

thisCol++;

break;

case 5:

lcd.print('5');

thisCol++;

break;

case 6:

lcd.print('6');

thisCol++;

break;

case 7:

lcd.print('B');

thisCol++;

break;

case 8:

lcd.print('7');

thisCol++;

break;

case 9:

lcd.print('8');

thisCol++;

break;

case 10:

lcd.print('9');

thisCol++;

break;

case 11:

lcd.print('C');

thisCol++;

break;

case 12:

lcd.print('*');

thisCol++;

break;

case 13:

lcd.print('0');

thisCol++;

break;

case 14:

lcd.print('#');

thisCol++;

break;

case 15:

lcd.print('D');

thisCol++;

break;

}

}while(thisCol<=5);

lcd.setCursor(1,thisCol);

//}

}

תודה מראש למי שיצליח לעזור

פורסם

למה אתה בודק את dds[3]? הרי זו תוצאה של digitalRead שיכולה להיות רק 0 או 1.

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

פורסם
  • מחבר

dd[3] זה החיבור של 4 הכניסות של הפורטים, כל אחת מהכניסות יכולה להיות או 1 או 0, אני בודק את המשתנה הגדול שמכיל את הצירוף ש'מסמן' איזה מקש נלחץ, 4 כניסות ל16 צירופים במקלדת של 4X4

ואני בודק בכמה קייסים כל פעם מחדש את אותו הקלט של ה4 סיביות

פורסם

לדאבג זה מספיק קשה אם אתה כתבת את הקוד

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

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

פורסם

dd[3] זה החיבור של 4 הכניסות של הפורטים, כל אחת מהכניסות יכולה להיות או 1 או 0, אני בודק את המשתנה הגדול שמכיל את הצירוף ש'מסמן' איזה מקש נלחץ, 4 כניסות ל16 צירופים במקלדת של 4X4

לא אתה לא. יש לך מערך של 4 משתנים מסוג int ואתה מכניס לכל אחד מהם 0 או 1. dds[3] הוא האחרון מביניהם.

[עריכה - תיקנתי את שם המשתנה, זה dds ולא dd]

פורסם
  • מחבר

פאדיחה עם הdd[3], לא שמתי לב

לא משנה, בכ"מ תודה לכל מי שניסה לעזור

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

ארכיון

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

דיונים חדשים