2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Stvaranje brojača koji se povećava pri pritisku tipke pomoću MAX7221.
Korak 1: Dijelovi
MAX7221 ili MAX7219
Sklopka
4 7-segmentni zaslon (zajednička katoda)
2 otpornika: 10k i 9.53k (koristio sam 9.1k i još uvijek radi)
Arduino
Korak 2: Izgradnja kruga
Zapisao sam samo pinove koje sam koristio, kompletan raspored pinova možete pronaći na podatkovnom listu ili sam ga priložio. Potražite svoj 7-segmentni zaslon jer će se vjerojatno razlikovati od mog, ali postupak je isti.
1. Spojite znamenke 0 - 3 na MAX7221 na znamenke 1 - 4 na zaslonu. MAX znamenka 0 povezuje se s prikazom 1 itd. Zasloni su samo nekonvencionalni i počinju s 1 umjesto s 0.
2. Spojite segmente A - G na MAX7221 sa segmentima A - G na zaslonu.
3. Napajanje i uzemljenje na MAX. VCC ide na pin 19. 10k otpornik je također spojen na pin 19 i 18. Uzemljenje ide na pinove 4 i 9.
4. MAX7221 komunicira s Arduinom putem SPI -ja (serijsko periferno sučelje). U ovom slučaju potrebne su samo 3 žice jer ne koristim MISO (Master In Slave Out). Na MAX7221 spojite pin 1 (Din) na Arduino, u mom slučaju koristio sam pin 12. Ovo je vaš MOSI (Master Out Slave In) ili podaci. Pin 12 na MAX -u je CS (Chip Select Input) i način na koji se podaci učitavaju u registar pomaka povezao sam ovo s pinom 9 na Arduinu. Posljednja veza je CLK koji je pin 13 na MAX -u, ovo sam spojio na pin 10 na Arduinu.
Pobrinite se za napajanje i uzemljenje putem Arduina pomoću 5 volti. Naišao sam na problem u kojem moj Arduino nije davao mojoj ploči dovoljno snage.
Ovo je za tehnički list MAX7221. Također odakle su slike došle.
www.mouser.com/datasheet/2/256/max7219-max…
Korak 3: Prekidač
Ožičio sam prekidač sa gornje sheme. Pronađeno na
Koristio sam pin 8 na Arduinu za upravljanje prekidačem i 10k otpornik.
Korak 4: Kodirajte
Koristio sam biblioteku LedControl.h koja se nalazi na GitHubu i njihov osnovni kod za uključivanje MAX7221. Zatim sam promijenio kôd tako da broji od 0 - 9999 kada se pritisne tipka.
#include "LedControl.h"
int gumb = 8;
LedControl lc = LedControl (12, 10, 9, 1);
void setup () {
pinMode (gumb, ULAZ);
lc.shutdown (0, false); // MAX7221 je u načinu rada za uštedu energije pa ga moramo probuditi
lc.setIntensity (0, 15); // Postavljanje svjetline, max 15
lc.clearDisplay (0); // brisanje prikaza
}
void loop () {{100} {101}
int state = digitalRead (gumb);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
dok (1) {
stanje = digitalno čitanje (gumb);
while (stanje == 1) {
stanje = digitalno čitanje (gumb);
lc.setDigit (0, 3, i, false);
i ++;
kašnjenje (100); // možeš se zezati s ovim
ako (i == 10) {
i = 0;
j ++;
ako (j == 10) {
j = 0;
k ++;
ako (k == 10) {
k = 0;
l ++;
ako (l == 10) {
dok (1) {
lc.setRow (0, 0, 0x3E); // kad zaslon dosegne 9999 prikazat će se U - 1
lc.setRow (0, 1, 0x1); // U Hexi decimalna vrijednost
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, lažno);
}
}
lc.setDigit (0, 0, l, false);
}
lc.setDigit (0, 1, k, false);
}
lc.setDigit (0, 2, j, false);
}
}
}
}