2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Skaitiklio, kuris padidėja paspaudus mygtuką, sukūrimas naudojant MAX7221.
1 žingsnis: dalys
MAX7221 arba MAX7219
Perjungti
4 7 segmentų ekranas (bendras katodas)
2 rezistoriai: 10k ir 9.53k (aš naudojau 9.1k ir vis dar veikia)
Arduino
2 žingsnis: grandinės kūrimas
Aš užrašiau tik mano naudojamus smeigtukus, visą kaiščių išdėstymą galite rasti duomenų lape arba aš jį pridėjau. Būtinai peržiūrėkite 7 segmentų ekraną, nes jis tikriausiai skirsis nuo mano, tačiau procedūra yra ta pati.
1. Prijunkite MAX7221 skaitmenis 0 - 3 prie skaitmenų 1 - 4 ekrane. MAX skaitmuo 0 jungiasi prie ekrano skaitmens 1 ir pan. Rodiniai yra tiesiog netradiciniai ir prasideda nuo 1, o ne 0.
2. Prijunkite MAX7221 segmentus A - G prie segmentų A - G ekrane.
3. Maitinkite ir įžeminkite MAX. VCC eina į 19 kaištį. 10k rezistorius taip pat prijungtas prie 19 ir 18 kaiščių. Žemė eina į 4 ir 9 kaiščius.
4. MAX7221 palaiko ryšį su „Arduino“per SPI (Serial Peripheral Interface). Šiuo atveju reikalingi tik 3 laidai, nes aš nenaudoju MISO (Master In Slave Out). Prie MAX7221 prijunkite 1 kaištį (Din) prie „Arduino“, mano atveju naudojau kaištį 12. Tai jūsų MOSI („Master Out Slave In“) arba duomenys. MAX 12 kaištis yra CS (lusto pasirinkimo įvestis) ir kaip duomenys įkeliami į „Shift“registrą, aš prijungiau jį prie „Arduino“9 kaiščio. Paskutinis ryšys yra CLK, kuris yra MAX 13 kaištis, aš jį prijungiau prie „Arduino“10 kaiščio.
Būtinai maitinkite ir įžeminkite per „Arduino“naudodami 5 voltų įtampą. Aš susidūriau su problema, kai mano „Arduino“nesuteikė mano valdybai pakankamai galios.
Tai skirta MAX7221 duomenų lapui. Taip pat iš kur atsirado nuotraukos.
www.mouser.com/datasheet/2/256/max7219-max…
3 žingsnis: jungiklis
Aš prijungiau jungiklį iš aukščiau pateiktos schemos. Rasta adresu
Aš naudoju 8 kaištį „Arduino“, kad valdyčiau jungiklį, ir 10 k rezistorių.
4 žingsnis: kodas
MAX7221 įjungimui naudojau „GitHub“rastą biblioteką „LedControl.h“ir jų pagrindinį kodą. Tada pakeičiau kodą, kad jis būtų skaičiuojamas nuo 0 iki 9999, kai spaudžiamas mygtukas.
#include "LedControl.h"
int mygtukas = 8;
LedControl lc = LedControl (12, 10, 9, 1);
void setup () {
pinMode (mygtukas, INPUT);
lc.sutdown (0, false); // MAX7221 veikia energijos taupymo režimu, todėl turime jį pažadinti
lc.setIntensity (0, 15); // Ryškumo nustatymas, maks. 15
lc.clearDisplay (0); // išvalymo ekranas
}
void loop () {
int būsena = digitalRead (mygtukas);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
nors (1) {
būsena = digitalRead (mygtukas);
o (būsena == 1) {
būsena = digitalRead (mygtukas);
lc.setDigit (0, 3, i, klaidinga);
i ++;
vėlavimas (100); // galite su tuo susipainioti
jei (i == 10) {
i = 0;
j ++;
jei (j == 10) {
j = 0;
k ++;
jei (k == 10) {
k = 0;
l ++;
jei (l == 10) {
nors (1) {
lc.setRow (0, 0, 0x3E); // kai ekranas pasieks 9999, bus rodomas U - 1
lc.setRow (0, 1, 0x1); // Hexi dešimtainiu skaičiumi
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, klaidinga);
}
}
lc.setDigit (0, 0, l, klaidinga);
}
lc.setDigit (0, 1, k, klaidinga);
}
lc.setDigit (0, 2, j, klaidinga);
}
}
}
}