2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Ustvarjanje števca, ki se poveča, ko pritisnete gumb z gumbom MAX7221.
1. korak: Deli
MAX7221 ali MAX7219
Preklopite
4 7-segmentni zaslon (skupna katoda)
2 upora: 10k in 9,53k (uporabil sem 9,1k in še vedno deluje)
Arduino
2. korak: Izdelava vezja
Zapisal sem samo zatiče, ki sem jih uporabil, celotno postavitev zatičev najdete na podatkovnem listu ali pa sem ga priložil. Poiščite 7-segmentni zaslon, ker se bo verjetno razlikoval od mojega, vendar je postopek enak.
1. Številke 0 - 3 na MAX7221 povežite s številkami 1 - 4 na zaslonu. Številka MAX 0 se poveže s številko 1 na zaslonu itd. Zasloni so preprosto nekonvencionalni in se začnejo pri 1 namesto 0.
2. Segmente A - G na MAX7221 povežite s segmentoma A - G na zaslonu.
3. Napajanje in ozemljitev MAX. VCC gre na pin 19. 10k upor je priključen tudi na pin 19 in 18. Ozemljitev gre na nožici 4 in 9.
4. MAX7221 komunicira z Arduinom prek SPI (serijski periferni vmesnik). V tem primeru so potrebne le 3 žice, ker ne uporabljam MISO (Master In Slave Out). Na MAX7221 priključite pin 1 (Din) na Arduino, v mojem primeru sem uporabil pin 12. To je vaš MOSI (Master Out Slave In) ali podatki. Pin 12 na MAX je CS (Chip Select Input) in tako se podatki nalagajo v register premikov, to sem povezal s pin 9 na Arduinu. Zadnja povezava je CLK, ki je pin 13 na MAX -u, to sem priključil na pin 10 na Arduinu.
Zagotovite napajanje in ozemljitev preko Arduina s 5 volti. Naletel sem na težavo, ko moj Arduino ni dal moji plošči dovolj moči.
To je za podatkovni list MAX7221. Tudi od kod prihajajo slike.
www.mouser.com/datasheet/2/256/max7219-max…
3. korak: Stikalo
Stikalo sem ožičil iz zgornje sheme. Najdeno na
Za krmiljenje stikala sem uporabil pin 8 na Arduinu in 10k upor.
4. korak: Koda
Za vklop MAX7221 sem uporabil knjižnico LedControl.h, ki jo najdemo na GitHubu, in njihovo osnovno kodo. Nato sem kodo spremenil tako, da šteje od 0 do 9999, ko pritisnete gumb.
#include "LedControl.h"
gumb int = 8;
LedControl lc = LedControl (12, 10, 9, 1);
void setup () {
pinMode (gumb, VHOD);
lc.shutdown (0, false); // MAX7221 je v načinu varčevanja z energijo, zato ga moramo prebuditi
lc.setIntensity (0, 15); // Nastavitev svetlosti, največ 15
lc.clearDisplay (0); // brisanje prikaza
}
void loop () {
int state = digitalRead (gumb);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
medtem ko (1) {
stanje = digitalno branje (gumb);
medtem ko (stanje == 1) {
stanje = digitalno branje (gumb);
lc.setDigit (0, 3, i, false);
i ++;
zamuda (100); // s tem se lahko zapleteš
če (i == 10) {
i = 0;
j ++;
če (j == 10) {
j = 0;
k ++;
če (k == 10) {
k = 0;
l ++;
če (l == 10) {
medtem ko (1) {
lc.setRow (0, 0, 0x3E); // ko zaslon doseže 9999, se prikaže U - 1
lc.setRow (0, 1, 0x1); // V decimalni vrednosti Hexi
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, napačno);
}
}
lc.setDigit (0, 0, l, napačno);
}
lc.setDigit (0, 1, k, false);
}
lc.setDigit (0, 2, j, false);
}
}
}
}