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

לוח מקשים 4 × 4 סיכה אחת: 10 שלבים
לוח מקשים 4 × 4 סיכה אחת: 10 שלבים

וִידֵאוֹ: לוח מקשים 4 × 4 סיכה אחת: 10 שלבים

וִידֵאוֹ: לוח מקשים 4 × 4 סיכה אחת: 10 שלבים
וִידֵאוֹ: אל תיגע לבחורה באיפור בחייםםם !!!! don't do that !!! 2024, נוֹבֶמבֶּר
Anonim
לוח מקשים סיכה אחת × 4
לוח מקשים סיכה אחת × 4

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

שלב 1: כתב חומרים

שטר חומרים
שטר חומרים

חוּמרָה:

01 ארדואינו UNO

02 לוחות לחם

01 LCD עם I2C

16 כפתורי לחיצה

נגדים 04 1.5 kΩ

נגדים 04 620 Ω

נגדים 04 220 Ω

נגדים 08 100 Ω

הנגד 01 kΩ

07 חוטי מגשר

תוֹכנָה:

Arduino IDE מותקן במחשב האישי שלך

שלב 2: סכמטי וקיקרוט

סכמטי וקיקרוט
סכמטי וקיקרוט
סכמטי וקיקרוט
סכמטי וקיקרוט

כל הרעיון הוא שיש לנו 4*4 מטריצה של כפתורי לחיצה המחוברים אנכית לקרקע על ידי המוביל הימני ואופקית על ידי ההובלה השנייה (להוביל הכפתור) ונגדים של 1.5 kΩ, 620Ω, 220Ω ו- 100Ω, קצותיו של ארבע השורות מחוברות על ידי ארבעה נגדים של 100Ω כפי שמוצג סכמטי.

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

שלב 3: הקוד

#לִכלוֹל

#לִכלוֹל

LiquidCrystal_I2C lcd (0x3f, 20, 4);

int לחצן = A0;

int readvalue;

הגדרת חלל ()

{

Serial.begin (9600);

lcd.begin ();

pinMode (לחצן, INPUT);

lcd.backlight ();

lcd.print ("שלום עולם");

עיכוב (2000);

lcd.clear ();

lcd.print ("לוח מקשים 4*4 סיכה אחת");

עיכוב (2000); }

לולאת חלל ()

{

readvalue = analogRead (לחצן);

Serial.println (readvalue);

if (readvalue == 852) {lcd.clear (); lcd.print ("A");}

אחרת {if (readvalue == 763) {lcd.clear (); lcd.print ("B");}

אחרת {if (readvalue == 685) {lcd.clear (); lcd.print ("C");}

אחרת {if (readvalue == 965) {lcd.clear (); lcd.print ("D");}

אחרת {if (readvalue == 565) {lcd.clear (); lcd.print ("9");}

אחרת {if (readvalue == 614) {lcd.clear (); lcd.print ("6");}

אחרת {if (readvalue == 360) {lcd.clear (); lcd.print ("3");}

אחרת {if (readvalue == 335) {lcd.clear (); lcd.print ("#");}

אחרת {if (readvalue == 396) {lcd.clear (); lcd.print ("8");}

אחרת {if (readvalue == 349) {lcd.clear (); lcd.print ("5");}

אחרת {if (readvalue == 235) {lcd.clear (); lcd.print ("2");}

אחרת {if (readvalue == 279) {lcd.clear (); lcd.print ("0");}

אחרת {if (readvalue == 452) {lcd.clear (); lcd.print ("7");}

אחרת {if (readvalue == 271) {lcd.clear (); lcd.print ("4");}

אחרת {if (readvalue == 170) {lcd.clear (); lcd.print ("1");}

else {if (readvalue == 92) {lcd.clear (); lcd.print ("*");} אחר {}}}}}}}}}}}}}}}}}

שלב 4: תיקון ערכים

תיקון ערכים
תיקון ערכים

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

שלב 5: פרויקט לאחר ביקורת וסקירה

פרויקט לאחר ביקורת וסקירה
פרויקט לאחר ביקורת וסקירה

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

החומרה:

החלטתי להלחיד את כל הרכיבים ב- PCB כדי להימנע מבעיית החיבור הלא טוב בלוחות הלחם.

הקוד:

חבר המליץ לי להשתמש בתוכנת פריקת תוכנה וזו רק לולאה (לולאה "למשל") כדי לגרום לתוכנית לקחת קצת זמן לבחור קריאה. זה אומר שהיא עושה הרבה קריאות (500 בבחינה שלי) אבל לוקחת רק האחרון.

עבור (i = 1; i <= 500; i ++) {// קח רק את הקריאה האנלוגית ה -500

value = analogRead (Button);} // זה עוזר לקחת קצת זמן ולמנוע קריאות לא טובות

חבר אחר בזכותו יעץ לי להשוות בין "readvalue" למגוון ערכים לא אחד כי "readvalue" דורש הרבה ערכים עבור אותו לחצן לחיצה. ה- "A" למשל נותן קריאה של: 849, 850, 851 852, 853, 854, 855 אז זהו טווח של 7 ערכים: סף (852) ו -3 ערכים שמאלה וימינה. מה שעלינו לעשות כאן הוא להשוות את הערך המוחלט של ההבדל בין "readvalue" ו- "852" ל- "3".

if (abs (readvalue-852) <= 8) {lcd.clear (); lcd.print ("A");}

שלב 6: לאחר עבודות מכירה

לאחר קצת עבודות מכירה
לאחר קצת עבודות מכירה
לאחר עבודות מכירה
לאחר עבודות מכירה
לאחר קצת עבודות מכירה
לאחר קצת עבודות מכירה

שלב 7: רגע האמת

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

שלב 8: הסוף

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

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

מוּמלָץ: