Search Code

Samouczek ESP32 10/55 - Licznik cyfrowy z wykorzystaniem wyświetlacza siedmiosegmentowego 74HC595 - Zestaw edukacyjny IoT ESP32

Samouczek ESP32 10/55 - Licznik cyfrowy z wykorzystaniem wyświetlacza siedmiosegmentowego 74HC595 - Zestaw edukacyjny IoT ESP32

W tym samouczku stworzymy licznik cyfrowy wykorzystujący wyświetlacz siedmiosegmentowy sterowany mikrokontrolerem ESP32. Licznik będzie zwiększał wartość od 0 do 9, a następnie zmniejszał z powrotem do 0, zapewniając wyraźny wizualny przebieg procesu zliczania. Przyjrzymy się również, jak włączać poszczególne segmenty i wyświetlać litery na wyświetlaczu siedmiosegmentowym.

ESP32_Animte7Segment-segments

Ten projekt wykorzystuje rejestr przesuwny 74HC595 do sterowania wyświetlaczem, co pozwala nam efektywnie zarządzać segmentami bez użycia zbyt wielu pinów GPIO na ESP32. Wysyłając wartości binarne do rejestru przesuwnego, możemy zapalać odpowiednie segmenty, aby przedstawiać liczby i litery. Aby lepiej zrozumieć ten proces, możesz odnieść się do wideo (na wideo o 03:15).

ESP32_Animte7Segment-letters

Objaśnienie sprzętu

Główne komponenty tego projektu obejmują mikrokontroler ESP32, rejestr przesuwny 74HC595 oraz wyświetlacz siedmiosegmentowy. ESP32 to wydajny mikrokontroler z wbudowaną obsługą Wi-Fi i Bluetooth, co czyni go odpowiednim do projektów IoT. 74HC595 to rejestr przesuwny, który pozwala nam sterować wieloma wyjściami za pomocą zaledwie kilku pinów wejściowych. Działa poprzez pobieranie danych szeregowych i konwertowanie ich na wyjście równoległe, co jest idealne do sterowania wyświetlaczem siedmiosegmentowym.

Wyświetlacz siedmiosegmentowy składa się z siedmiu pojedynczych diod LED ułożonych w kształcie cyfry osiem. Każdy segment można włączać lub wyłączać, wysyłając odpowiednią wartość binarną do rejestru przesuwnego. Na przykład, aby wyświetlić cyfrę 0, wszystkie segmenty z wyjątkiem środkowego (G) muszą być zapalone.

ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-1

Szczegóły z karty katalogowej

Producent Texas Instruments
Numer części 74HC595
Napięcie logiki/IO 2 V do 6 V
Napięcie zasilania 2 V do 6 V
Prąd wyjściowy (na kanał) 6 mA
Prąd szczytowy (na kanał) 35 mA
Zalecana częstotliwość PWM Do 1 kHz
Progi logiczne wejścia 0,3 VCC do 0,7 VCC
Spadek napięcia / RDS(on) / nasycenie Maks. 0,2 V
Limity termiczne 125 °C
Obudowa DIP-16
Uwagi / warianty Dostępny w różnych obudowach

 

  • Zapewnij prawidłowe napięcie zasilania (2 V do 6 V).
  • Ogranicz prąd wyjściowy, aby zapobiec przegrzaniu.
  • Użyj oddzielnych rezystorów dla każdego segmentu, aby uzyskać optymalną jasność.
  • Zachowaj ostrożność podczas okablowania, aby uniknąć zwarć i nieprawidłowych połączeń.
  • Dokładnie przestrzegaj rozmieszczenia pinów, aby uniknąć błędnej konfiguracji.

Instrukcje okablowania

ESP32-10-seven-segment-wiring

Zacznij od przygotowania płytki stykowej. Podłącz szynę masy (niebieska linia) i szynę zasilania (czerwona linia). Masa powinna być podłączona do niebieskiej linii po jednej stronie płytki stykowej, a zasilanie do czerwonej linii po przeciwnej stronie. Użyj czarnego przewodu, aby podłączyć masę ESP32 do szyny masy, oraz czerwonego przewodu, aby podłączyć pin 3,3 V ESP32 do szyny zasilania.

Następnie umieść rejestr przesuwny 74HC595 na płytce stykowej, upewniając się, że wcięcie jest prawidłowo zorientowane. Podłącz pin 11 (DS) do pinu 25 na ESP32, pin 12 (SH_CP) do pinu 26 oraz pin 14 (ST_CP) do pinu 27. Podłącz masę (pin 8) rejestru przesuwnego do szyny masy, a pin 10 (MR) do szyny zasilania w celu aktywacji.

W przypadku wyświetlacza siedmiosegmentowego podłącz piny odpowiadające segmentom (a-g) do pinów wyjściowych rejestru przesuwnego. Użyj rezystora (220 omów) połączonego szeregowo dla każdego segmentu, aby ograniczyć prąd. Upewnij się, że masz prawidłowe połączenia dla wspólnego pinu, który może być wspólną anodą lub katodą w zależności od typu wyświetlacza.

Przykłady kodu i omówienie

W funkcji setup zaczynamy od zdefiniowania pinów podłączonych do rejestru przesuwnego jako wyjścia. Zapewnia to, że nasz ESP32 może kontrolować dane wysyłane do wyświetlacza.

void setup ()
{
  //ustaw piny jako wyjścia
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}

Tutaj definiujemy STcp, SHcp i DS jako piny podłączone odpowiednio do ST_CP, SH_CP i DS rejestru przesuwnego. Ustawienie tych pinów jako wyjść pozwala nam sterować rejestrem przesuwnym.

Główna pętla programu zlicza od 0 do 9, wysyłając odpowiednie wartości do wyświetlacza za pomocą funkcji shiftOut.

for(int num = 0; num <10; num++)
{
    digitalWrite(STcp,LOW); //ustaw ST_CP na niski poziom i trzymaj go nisko tak długo, jak transmitujesz
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //podnieś ST_CP, aby zapisać dane
    delay(1000);
}

Ta pętla zwiększa zmienną num, wysyłając odpowiednią wartość z datArray na wyświetlacz co sekundę. Funkcja shiftOut przesyła dane do rejestru przesuwnego, który następnie zapala odpowiednie segmenty.

Demonstracja / Czego się spodziewać

Po zakończeniu podłączania i wgraniu kodu powinieneś zobaczyć, jak wyświetlacz siedmiosegmentowy liczy od 0 do 9, zatrzymując się na chwilę przed odliczaniem z powrotem do 0. Każda liczba będzie wyświetlana przez jedną sekundę. Jeśli chcesz przyspieszyć liczenie, możesz dostosować opóźnienie w pętli (na filmie w 15:30).

Podczas manipulowania segmentami indywidualnie pamiętaj o wysyłaniu poprawnych wartości binarnych, aby wyświetlić litery lub konkretne segmenty. Jeśli wyświetlacz wydaje się przyciemniony, rozważ dodanie osobnych rezystorów dla każdego segmentu, aby zapewnić równomierną jasność na całym wyświetlaczu.

Znaczniki czasowe filmu

  • 00:00 Start
  • 1:53 Wprowadzenie do wyświetlacza siedmiosegmentowego
  • 4:38 Wyjaśnienie podłączenia
  • 13:15 Kod Arduino-1
  • 17:01 Wybór portu COM i płytki ESP32
  • 18:43 Demonstracja-1
  • 20:13 Wyświetlanie tylko jednej cyfry
  • 21:38 Licznik w górę i w dół
  • 23:07 Włączanie/wyłączanie każdego segmentu
  • 24:53 Wyświetlanie A, B, C, D, E i F

Obrazy

ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-1
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-counter-up-down
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-letters
ESP32_Animte7Segment-segments
ESP32_Animte7Segment-segments
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-schematic
ESP32-10-seven-segment-wiring
ESP32-10-seven-segment-wiring
809-ESP32 Tutorial 10/55 - Arduino code for 2.5 7 segment
Język: C++
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP 
const int DS = 25; //DS 

int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void setup ()
{
  //set pins to output
  pinMode(STcp,OUTPUT);
  pinMode(SHcp,OUTPUT);
  pinMode(DS,OUTPUT);
}
void loop()
{
  for(int num = 0; num <10; num++)
  {
    digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
    shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
    digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
    delay(1000);
  }
}

Zasoby i odniesienia

Pliki📁

Brak dostępnych plików.