תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
יצירת מונה המתגבר כאשר לוחצים על כפתור באמצעות ה- MAX7221.
שלב 1: חלקים
MAX7221 או MAX7219
החלף
4 תצוגות של 7 קטעים (קתודה נפוצה)
2 נגדים: 10k ו- 9.53k (השתמשתי ב- 9.1k וזה עדיין עובד)
ארדואינו
שלב 2: בניית המעגל
רשמתי רק את הפינים שבהם השתמשתי, תוכל למצוא את פריסת הסיכה השלמה בגליון הנתונים או שהצמדתי אותו. הקפד לחפש את תצוגת 7 המקטעים שלך מכיוון שהיא כנראה תהיה שונה משלי אך הנוהל זהה.
1. חבר את הספרות 0 - 3 ב- MAX7221 לספרות 1-4 בתצוגה. ספרת MAX 0 מתחברת לתצוגה מספר 1 וכו 'התצוגות פשוט לא שגרתיות ומתחילות ב -1 במקום 0.
2. חבר את פלחי A - G על MAX7221 לפלחים A - G בתצוגה.
3. ספק כוח וקרקע ל- MAX. VCC עובר לסיכה 19. הנגד של 10k מחובר גם לסיכה 19 ו- 18. הקרקע עוברת לפינים 4 ו -9.
4. ה- MAX7221 מתקשר עם ה- Arduino באמצעות SPI (ממשק היקפי סידורי). במקרה זה דרושים רק 3 חוטים מכיוון שאני לא משתמש ב- MISO (Master In Slave Out). ב- MAX7221 חבר את סיכה 1 (דין) ל- Arduino, במקרה שלי השתמשתי בסיכה 12. זהו ה- MOSI שלך (Master Out Slave In) או הנתונים. סיכה 12 ב- MAX היא CS (קלט בחירת שבבים) וככה הנתונים נטענים במרשם המשמרות, חיברתי את זה לסיכה 9 בארדואינו. החיבור האחרון הוא CLK שהוא סיכה 13 ב- MAX, חיברתי אותו לסיכה 10 בארדואינו.
הקפד לספק כוח וקרקע דרך הארדואינו באמצעות 5 וולט. נתקלתי בבעיה שבה הארדואינו שלי לא נתן ללוח שלי מספיק כוח.
זה עבור גליון הנתונים MAX7221. גם מהיכן הגיעו התמונות.
www.mouser.com/datasheet/2/256/max7219-max…
שלב 3: המתג
חיברתי את המתג מהסכימה למעלה. נמצא בכתובת
השתמשתי בסיכה 8 בארדואינו לשליטה במתג ובנגד 10k.
שלב 4: קוד
השתמשתי בספריית LedControl.h שנמצאה ב- GitHub ובקוד הבסיסי שלהם כדי להפעיל את ה- MAX7221. לאחר מכן שיניתי את הקוד לספירה בין 0 - 9999 בעת לחיצה על הכפתור.
#כלול "LedControl.h"
כפתור int = 8;
LedControl lc = LedControl (12, 10, 9, 1);
הגדרת בטל () {
pinMode (כפתור, INPUT);
כיבוי lc. (0, שקר); // MAX7221 נמצא במצב חיסכון בחשמל, לכן עלינו להעיר אותו
lc.setIntensity (0, 15); // הגדרת בהירות, מקסימום 15
lc.clearDisplay (0); // תצוגת ניקוי
}
לולאת חלל () {
int int = digitalRead (כפתור);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
בעוד (1) {
state = digitalRead (כפתור);
בעוד (מצב == 1) {
state = digitalRead (כפתור);
lc.setDigit (0, 3, i, false);
i ++;
עיכוב (100); // אתה יכול להתעסק עם זה
אם (i == 10) {
i = 0;
j ++;
אם (j == 10) {
j = 0;
k ++;
אם (k == 10) {
k = 0;
l ++;
אם (l == 10) {
בעוד (1) {
lc.setRow (0, 0, 0x3E); // כאשר התצוגה הגיעה ל 9999 היא תציג U - 1
lc.setRow (0, 1, 0x1); // בערך Hexi עשרוני
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, false);
}
}
lc.setDigit (0, 0, l, false);
}
lc.setDigit (0, 1, k, false);
}
lc.setDigit (0, 2, j, false);
}
}
}
}