Zpět na články

ESP32 + TM1637 4místný 7segmentový displej

ESP32 a TM1637: zapojení, ovládání displeje a projekty jako hodiny či teplota.

ESP32 + TM1637 4místný 7segmentový displej

Tento návod ukazuje, jak připojit 4místný 7segmentový displej s driverem TM1637 k ESP32 pomocí Arduino IDE. Naučíš se zapojení, základní funkce i praktické projekty jako digitální hodiny nebo zobrazení teploty.

Co je TM1637 displej

TM1637 je modul, který obsahuje čtyři 7segmentové číslice řízené jedním čipem. Nejčastější varianta má mezi druhou a třetí číslicí dvojtečku, což se hodí například pro zobrazení času.

Existují i jiné varianty:

  • s tečkami mezi číslicemi
  • se šesti číslicemi (ty ale potřebují jinou knihovnu)
ESP32 Blog image
ESP32 Blog image

Zapojení k ESP32

Displej se připojuje velmi jednoduše – používá jen dva datové piny:

  • CLK → libovolný GPIO (např. GPIO 19)
  • DIO → libovolný GPIO (např. GPIO 18)
  • VCC → VIN (nebo 5V)
  • GND → GND

Můžeš použít i jiné GPIO piny podle potřeby.

ESP32 Blog image

Instalace knihovny

Použij knihovnu TM1637Display (avishorp):

  1. Otevři Arduino IDE
  2. Přejdi do Library Manageru
  3. Vyhledej „TM1637“
  4. Nainstaluj knihovnu

Je sice starší, ale stále funguje velmi dobře a je jednoduchá na použití.

ESP32 Blog image

Ovládání segmentů

Každá číslice má 7 segmentů (A–G), které se ovládají pomocí bitů:

  • A → bit 0
  • B → bit 1
  • C → bit 2
  • D → bit 3
  • E → bit 4
  • F → bit 5
  • G → bit 6

Například:

  • zapnutí A+B+C → 0b0000111
  • zapnutí B+C → 0b0000110

Jak zobrazit čísla

Každé číslo odpovídá kombinaci segmentů:

  • 0 → a b c d e f
  • 1 → b c
  • 2 → a b g e d
  • 3 → a b g c d
  • 4 → f g b c
  • 5 → a f g c d
  • 6 → a f g e d c
  • 7 → a b c
  • 8 → všechny
  • 9 → a b c d f g

Testovací kód (základní funkce)

display.cpp
1#include <Arduino.h> 2#include <TM1637Display.h> 3 4#define CLK 19 5#define DIO 18 6 7TM1637Display display(CLK, DIO); 8 9void setup() { 10 display.setBrightness(7); 11 12 uint8_t segments[] = { 13 0b0111111, 14 0b0000110, 15 0b1011011, 16 0b1001111 17 }; 18 19 display.setSegments(segments); 20} 21 22void loop() { 23}

Tento kód ověří, že displej funguje správně.

Praktické projekty

Digitální hodiny (NTP přes WiFi)

Displej je ideální pro hodiny:

Princip:

  1. ESP32 se připojí k WiFi
  2. získá čas přes NTP
  3. zobrazí ho jako HH:MM

Čas se převádí na číslo:

display.cpp
1int value = hours * 100 + minutes;

Např.:

  • 12:30 → 1230

Dvojtečka může blikat každou sekundu.

Kompletní kód – WiFi hodiny

display.cpp
1#include <WiFi.h> 2#include "time.h" 3#include <TM1637Display.h> 4 5#define CLK 19 6#define DIO 18 7 8TM1637Display display(CLK, DIO); 9 10// WiFi údaje 11const char* ssid = "TVE_WIFI"; 12const char* password = "HESLO"; 13 14// časová zóna (CZ) 15const char* TZ_INFO = "CET-1CEST,M3.5.0/2,M10.5.0/3"; 16 17void setup() { 18 display.setBrightness(7); 19 20 WiFi.begin(ssid, password); 21 while (WiFi.status() != WL_CONNECTED) { 22 delay(500); 23 } 24 25 configTzTime(TZ_INFO, "pool.ntp.org"); 26} 27 28void loop() { 29 struct tm timeinfo; 30 31 if (!getLocalTime(&timeinfo)) { 32 return; 33 } 34 35 int hours = timeinfo.tm_hour; 36 int minutes = timeinfo.tm_min; 37 38 int value = hours * 100 + minutes; 39 40 static bool colon = false; 41 colon = !colon; 42 43 uint8_t colonMask = colon ? 0b01000000 : 0; 44 45 display.showNumberDecEx(value, colonMask, true); 46 47 delay(1000); 48}

Zobrazení teploty (Weather API)

Druhý projekt:

  • ESP32 stáhne teplotu z internetu
  • zobrazí ji na displeji
  • není potřeba žádný senzor

Výhodou je využití WiFi místo hardwaru.

Shrnutí

TM1637 je:

  • levný
  • jednoduchý
  • ideální pro IoT

Použiješ ho na:

  • hodiny
  • počítadla
  • senzory
  • zobrazování dat

Stačí jen 2 piny a pár funkcí.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.