Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Tworzenie licznika, który zwiększa się po naciśnięciu przycisku za pomocą MAX7221.
Krok 1: Części
MAX7221 lub MAX7219
Przełącznik
4 Wyświetlacz 7-segmentowy (wspólna katoda)
2 rezystory: 10k i 9.53k (użyłem 9,1k i nadal działa)
Arduino
Krok 2: Budowanie obwodu
Zapisałem tylko piny, których użyłem, kompletny układ pinów można znaleźć w arkuszu danych lub go dołączyłem. Upewnij się, że sprawdziłeś swój wyświetlacz 7-segmentowy, ponieważ prawdopodobnie będzie się różnił od mojego, ale procedura jest taka sama.
1. Połącz cyfry 0 - 3 na MAX7221 z cyframi 1 - 4 na wyświetlaczu. Cyfra MAX 0 łączy się z cyfrą 1 itd. Wyświetlacze są po prostu niekonwencjonalne i zaczynają się od 1 zamiast 0.
2. Połącz segmenty A - G na MAX7221 z segmentami A - G na wyświetlaczu.
3. Zasilanie i uziemienie do MAX. VCC idzie do pinu 19. Rezystor 10k jest również podłączony do pinów 19 i 18. Masa idzie do pinów 4 i 9.
4. MAX7221 komunikuje się z Arduino przez SPI (Serial Peripheral Interface). W tym przypadku potrzebne są tylko 3 przewody, ponieważ nie używam MISO (Master In Slave Out). Na MAX7221 podłącz pin 1 (Din) do Arduino, w moim przypadku użyłem pinu 12. To jest twoje MOSI (Master Out Slave In) lub dane. Pin 12 na MAX to CS (Chip Select Input) i w ten sposób dane są ładowane do rejestru przesuwnego, podłączyłem to do pinu 9 na Arduino. Ostatnim połączeniem jest CLK, który jest pinem 13 na MAX, podłączyłem to do pinu 10 na Arduino.
Upewnij się, że dostarczasz zasilanie i uziemienie przez Arduino przy użyciu 5 woltów. Natknąłem się na problem polegający na tym, że moje Arduino nie zapewniało wystarczającej mocy mojej płycie.
Dotyczy to arkusza danych MAX7221. Również skąd pochodzą zdjęcia.
www.mouser.com/datasheet/2/256/max7219-max…
Krok 3: Przełącznik
Podłączyłem przełącznik ze schematu powyżej. Znalezione na
Użyłem pinu 8 na Arduino do sterowania przełącznikiem i rezystora 10k.
Krok 4: Kod
Użyłem biblioteki LedControl.h znalezionej na GitHub i ich podstawowego kodu, aby włączyć MAX7221. Następnie zmodyfikowałem kod, aby liczył od 0 do 9999 po naciśnięciu przycisku.
#include "LedControl.h"
wewn przycisk = 8;
LedControl lc=LedControl(12, 10, 9, 1);
pusta konfiguracja () {
pinMode(przycisk, WEJŚCIE);
lc.shutdown(0, fałsz); // MAX7221 jest w trybie oszczędzania energii, więc musimy go obudzić
lc.setIntensity(0, 15); // Ustawienie jasności, max 15
lc.clearWyświetlacz(0); // czyszczenie wyświetlacza
}
pusta pętla () {
stan int = digitalRead(przycisk);
int i = 0;
intj = 0;
int k = 0;
intl = 0;
póki(1){
stan = digitalRead(przycisk);
while(stan == 1){
stan = digitalRead(przycisk);
lc.setDigit(0, 3, i, fałsz);
i++;
opóźnienie (100); // możesz się z tym bawić
jeśli(i == 10){
i = 0;
j++;
jeśli(j == 10){
j = 0;
k++;
jeśli(k == 10){
k = 0;
l++;
jeśli(l == 10){
póki(1){
lc.setRow(0, 0, 0x3E); // gdy wyświetlacz osiągnie 9999, wyświetli U -- 1
lc.setRow(0, 1, 0x1); // W wartości szesnastkowej dziesiętnej
lc.setRow(0, 2, 0x1);
lc.setDigit(0, 3, 1, fałsz);
}
}
lc.setDigit(0, 0, l, fałsz);
}
lc.setDigit(0, 1, k, fałsz);
}
lc.setDigit(0, 2, j, fałsz);
}
}
}
}