2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Crearea unui contor care crește la apăsarea unui buton folosind MAX7221.
Pasul 1: Piese
MAX7221 sau MAX7219
Intrerupator
4 Afișaj cu 7 segmente (catod comun)
2 rezistențe: 10k și 9.53k (am folosit un 9.1k și încă funcționează)
Arduino
Pasul 2: Construirea circuitului
Am notat doar pinii pe care i-am folosit, puteți găsi aspectul complet al pinului pe foaia tehnică sau l-am atașat. Nu uitați să căutați afișajul dvs. pe 7 segmente, deoarece probabil va diferi de al meu, dar procedura este aceeași.
1. Conectați cifrele 0 - 3 de pe MAX7221 la cifrele 1 - 4 de pe afișaj. Cifra MAX 0 se conectează la cifrele afișate 1 etc. Afișajele sunt doar neconvenționale și încep de la 1 în loc de 0.
2. Conectați segmentele A - G de pe MAX7221 la segmentele A - G de pe afișaj.
3. Alimentați cu putere și împământare la MAX. VCC merge la pinul 19. Rezistorul de 10k este, de asemenea, conectat la pinul 19 și 18. Masa merge la pinii 4 și 9.
4. MAX7221 comunică cu Arduino prin SPI (Serial Peripheral Interface). În acest caz, sunt necesare doar 3 fire, deoarece nu folosesc MISO (Master In Slave Out). Pe MAX7221 conectați pinul 1 (Din) la Arduino, în cazul meu am folosit pinul 12. Acesta este MOSI (Master Out Slave In) sau datele. Pinul 12 de pe MAX este CS (Chip Select Input) și este modul în care datele sunt încărcate în registrul Shift, l-am conectat la pinul 9 de pe Arduino. Ultima conexiune este CLK, care este pinul 13 de pe MAX, am conectat acest lucru la pinul 10 de pe Arduino.
Asigurați-vă că furnizați energie și împământare prin Arduino folosind 5 volți. M-am confruntat cu problema în care Arduino-ul meu nu oferea consiliului meu suficientă putere.
Aceasta este pentru foaia de date MAX7221. De asemenea, de unde au venit pozele.
www.mouser.com/datasheet/2/256/max7219-max…
Pasul 3: Comutatorul
Am conectat comutatorul de la schema de mai sus. Găsit la
Am folosit pinul 8 de pe Arduino pentru a controla comutatorul și un rezistor de 10k.
Pasul 4: Cod
Am folosit biblioteca LedControl.h găsită pe GitHub și codul lor de bază pentru a porni MAX7221. Apoi am modificat codul pentru a contoriza de la 0 la 9999 când butonul este apăsat.
#include „LedControl.h”
buton int = 8;
LedControl lc = LedControl (12, 10, 9, 1);
configurare nulă () {
pinMode (buton, INPUT);
lc.shutdown (0, false); // MAX7221 este în modul de economisire a energiei, deci trebuie să-l trezim
lc.setIntensity (0, 15); // Setarea luminozității, maxim 15
lc.clearDisplay (0); // curățarea afișajului
}
bucla nulă () {
int state = digitalRead (buton);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
în timp ce (1) {
state = digitalRead (buton);
while (stare == 1) {
state = digitalRead (buton);
lc.setDigit (0, 3, i, fals);
i ++;
întârziere (100); // te poți încurca cu asta
if (i == 10) {
i = 0;
j ++;
if (j == 10) {
j = 0;
k ++;
if (k == 10) {
k = 0;
l ++;
if (l == 10) {
în timp ce (1) {
lc.setRow (0, 0, 0x3E); // când afișajul a ajuns la 9999 va afișa U - 1
lc.setRow (0, 1, 0x1); // În valoare zecimală Hexi
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, false);
}
}
lc.setDigit (0, 0, l, fals);
}
lc.setDigit (0, 1, k, fals);
}
lc.setDigit (0, 2, j, false);
}
}
}
}