תוכן עניינים:
- שלב 1: כתב חומרים
- שלב 2: סכמטי וקיקרוט
- שלב 3: הקוד
- שלב 4: תיקון ערכים
- שלב 5: פרויקט לאחר ביקורת וסקירה
- שלב 6: לאחר עבודות מכירה
- שלב 7: רגע האמת
- שלב 8: הסוף
וִידֵאוֹ: לוח מקשים 4 × 4 סיכה אחת: 10 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
בכל פעם שאני רואה לוח מקשים, הוא מגיע עם הרבה סיכות, זה בזבוז גדול של סיכות הארדואינו שלך, אז האם נוכל להפעיל לוח מקשים עם סיכה אחת ויחידה? התשובה כאן.
שלב 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: הסוף
אני מקווה שאתה אוהב את הפרויקט הזה ואתה מנסה לעשות אותו, יכול להיות שתצליח יותר ממני.
שאל אותי אם יש לך שאלות, השאר הערות ואל תשכח להצביע לי אם אתה אוהב את זה.
מוּמלָץ:
כיצד לקרוא ערכים אנלוגיים מרובים באמצעות סיכה אנלוגית אחת: 6 שלבים (עם תמונות)
כיצד לקרוא ערכים אנלוגיים מרובים באמצעות סיכה אנלוגית אחת: במדריך זה אני הולך להראות לך כיצד לקרוא ערכים אנלוגיים מרובים באמצעות סיכת קלט אנלוגית אחת בלבד
מעגל תפס כבוי עם UC. כפתור לחיצה אחד. סיכה אחת. רכיב נפרד: 5 שלבים
מעגל תפס כבוי עם UC. כפתור לחיצה אחד. סיכה אחת. רכיב נפרד: שלום לכולם, חיפשתי מעגל הפעלה/כיבוי ברשת. כל מה שמצאתי לא היה מה שחיפשתי. דיברתי עם עצמי, יש בהכרח דרך לזה. זה מה שהייתי צריך. -כפתור לחיצה אחד בלבד לביצוע לסירוגין. -חובה להשתמש רק
לוח מקשים 2 מקשים לאוסו !: 6 שלבים
2 מקשי לוח מקשים לאוסו !: במדריך זה תדעו כיצד להכין מקש 2 מקשים עבור osu! אנא עקוב אחר ההנחיות
ממשק לוח מקשים עם 8051 ומציג מספרי לוח מקשים ב -7 פלחים: 4 שלבים (עם תמונות)
ממשק לוח מקשים עם 8051 והצגת מספרי לוח מקשים ב -7 פלחים: במדריך זה אני הולך לספר לך כיצד נוכל לממשק לוח מקשים עם 8051 ולהציג מספרי לוח מקשים בתצוגת 7 פלחים
לוח מקשים בלחיצה אחת: 4 שלבים (עם תמונות)
מכשיר מקשים בלחיצה אחת: מבזבז שניות יקרות והקלדת קוד בכל פעם שאתה צריך לפתוח את הדלת? ה'מכשיר 'הקטן הזה מייעל את התהליך על ידי לחיצה על המקשים הנכונים עבורך, ויכול להיות מוסתר בכף ידך כך שתוכל פשוט לרסק את ידך על לוח המקשים ו - האפליקציה