Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Opprette en teller som øker når du trykker på en knapp med MAX7221.
Trinn 1: Deler
MAX7221 eller MAX7219
Bytte om
4 7-segmenters display (vanlig katode)
2 motstander: 10k og 9,53k (jeg brukte en 9,1k og den fungerer fortsatt)
Arduino
Trinn 2: Bygg kretsen
Jeg skrev bare ned pinnene som jeg brukte, du kan finne hele pin -oppsettet på databladet eller jeg festet det. Sørg for å slå opp 7-segmentskjermen fordi den sannsynligvis vil avvike fra min, men fremgangsmåten er den samme.
1. Koble tall 0 - 3 på MAX7221 til sifre 1 - 4 på displayet. MAX siffer 0 kobles til displayet siffer 1 etc. Displayene er bare ukonvensjonelle og starter med 1 i stedet for 0.
2. Koble segmentene A - G på MAX7221 til segmentene A - G på displayet.
3. Tilfør strøm og jord til MAX. VCC går til pin 19. 10k -motstanden er også koblet til pin 19 og 18. Jord går til pins 4 og 9.
4. MAX7221 kommuniserer med Arduino via SPI (Serial Peripheral Interface). I dette tilfellet trengs bare 3 ledninger fordi jeg ikke bruker MISO (Master In Slave Out). På MAX7221 kobler du pin 1 (Din) til Arduino, i mitt tilfelle brukte jeg pin 12. Dette er din MOSI (Master Out Slave In) eller dataene. Pin 12 på MAX er CS (Chip Select Input) og er hvordan dataene lastes inn i skiftregisteret, jeg koblet dette til pin 9 på Arduino. Den siste tilkoblingen er CLK som er pin 13 på MAX, jeg koblet denne til pin 10 på Arduino.
Sørg for å levere strøm og jord gjennom Arduino ved å bruke 5 volt. Jeg løp inn i problemet der min Arduino ikke ga bordet mitt nok strøm.
Dette er for databladet MAX7221. Også hvor bildene kom fra.
www.mouser.com/datasheet/2/256/max7219-max…
Trinn 3: Bryteren
Jeg koblet til bryteren fra skjemaet ovenfor. Funnet på
Jeg brukte pin 8 på Arduino for å kontrollere bryteren, og en 10k motstand.
Trinn 4: Kode
Jeg brukte LedControl.h -biblioteket som ble funnet på GitHub, og deres grunnleggende kode for å slå på MAX7221. Jeg endret deretter koden for å telle fra 0 - 9999 når knappen trykkes.
#inkludere "LedControl.h"
int -knapp = 8;
LedControl lc = LedControl (12, 10, 9, 1);
ugyldig oppsett () {
pinMode (knapp, INNGANG);
lc.stopp (0, usann); // MAX7221 er i strømsparingsmodus, så vi må vekke den
lc.setIntensity (0, 15); // Innstilling av lysstyrke, maks 15
lc.clearDisplay (0); // ryddevisning
}
void loop () {
int state = digitalRead (knapp);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
mens (1) {
state = digitalRead (knapp);
mens (tilstand == 1) {
state = digitalRead (knapp);
lc.setDigit (0, 3, i, false);
i ++;
forsinkelse (100); // du kan rote med dette
hvis (i == 10) {
i = 0;
j ++;
hvis (j == 10) {
j = 0;
k ++;
hvis (k == 10) {
k = 0;
l ++;
hvis (l == 10) {
mens (1) {
lc.setRow (0, 0, 0x3E); // når displayet nådde 9999, vil det vise U - 1
lc.setRow (0, 1, 0x1); // I Hexi desimalverdi
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);
}
}
}
}