2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
MAX7221 yordamida tugma bosilganda ko'payadigan hisoblagich yaratish.
1 -qadam: qismlar
MAX7221 yoki MAX7219
O'tish
4 ta 7 segmentli displey (umumiy katod)
2 rezistor: 10k va 9.53k (men 9.1k ishlatganman va u hali ham ishlaydi)
Arduino
2 -qadam: O'chirish tizimini yaratish
Men faqat o'zim ishlatgan pimlarni yozdim, siz ma'lumotlarning to'liq jadvalini topishingiz mumkin yoki men uni biriktirganman. 7-segmentli displeyni qidirganingizga ishonch hosil qiling, chunki u menikidan farq qilishi mumkin, lekin protsedura bir xil.
1. MAX7221 dagi 0 - 3 raqamlarini displeydagi 1 - 4 raqamlariga ulang. MAX raqami 0 displey 1 raqamiga ulanadi. Displeylar noan'anaviy bo'lib, 0 o'rniga 1 dan boshlanadi.
2. MAX7221 dagi A - G segmentlarini displeydagi A - G segmentlariga ulang.
3. MAX ga quvvat va topraklama bering. VCC 19 -pinga o'tadi. 10k qarshilik 19 va 18 -pinlarga ham ulanadi. Ground 4 va 9 -pinlarga o'tadi.
4. MAX7221 Arduino bilan SPI (Serial Periferik Interfeys) orqali muloqot qiladi. Bu holda faqat 3 ta sim kerak, chunki men MISO (Master In Slave Out) dan foydalanmayapman. MAX7221 -da 1 -pinni (Din) Arduino -ga ulang, menda 12 -pin ishlatilgan. Bu sizning MOSI (Master Out Slave In) yoki ma'lumotlar. MAX -dagi 12 -pin - CS (Chip Select Input) va ma'lumotlar Shift reestriga qanday yuklanadi, men buni Arduino -dagi 9 -pin bilan bog'ladim. Oxirgi ulanish - bu MAX -dagi 13 -pinli CLK, men buni Arduino -dagi 10 -pin bilan bog'ladim.
5 voltli Arduino orqali quvvat va topraklama ta'minlang. Men muammoga duch keldim, chunki mening Arduino taxtamga etarli kuch bermadi.
Bu MAX7221 ma'lumotlar jadvaliga tegishli. Shuningdek, rasmlar qaerdan paydo bo'lgan.
www.mouser.com/datasheet/2/256/max7219-max…
3 -qadam: Kalit
Men kalitni yuqoridagi sxemadan o'tkazdim. Https://www.arduino.cc/en/tutorial/button saytida topilgan
Men kalitni boshqarish uchun Arduino -dagi 8 -pinni va 10k qarshiligini ishlatardim.
4 -qadam: kod
Men GitHub -da topilgan LedControl.h kutubxonasidan va MAX7221 -ni yoqish uchun ularning asosiy kodidan foydalandim. Keyin tugma bosilganda kodni 0 - 9999 gacha hisoblash uchun o'zgartirdim.
#"LedControl.h" ni qo'shing
int tugmasi = 8;
LedControl lc = LedControl (12, 10, 9, 1);
bo'sh o'rnatish () {
pinMode (tugma, INPUT);
lc.shutdown (0, noto'g'ri); // MAX7221 energiya tejash rejimida, shuning uchun biz uni uyg'otishimiz kerak
lc.setIntensity (0, 15); // Yorqinlikni sozlash, maksimal 15
lc.clearDisplay (0); // displeyni tozalash
}
void loop () {
int holati = digitalRead (tugma);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
vaqt (1) {
holat = digitalRead (tugma);
vaqt (holat == 1) {
holat = digitalRead (tugma);
lc.setDigit (0, 3, i, noto'g'ri);
i ++;
kechikish (100); // bu bilan chalkashib ketishingiz mumkin
agar (i == 10) {
i = 0;
j ++;
agar (j == 10) {
j = 0;
k ++;
agar (k == 10) {
k = 0;
l ++;
agar (l == 10) {
vaqt (1) {
lc.setRow (0, 0, 0x3E); // displey 9999 ga yetganda U - 1 ni ko'rsatadi
lc.setRow (0, 1, 0x1); // Hexi o'nlik qiymatida
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, noto'g'ri);
}
}
lc.setDigit (0, 0, l, noto'g'ri);
}
lc.setDigit (0, 1, k, noto'g'ri);
}
lc.setDigit (0, 2, j, noto'g'ri);
}
}
}
}