ESP32 - TM1637 4-cijfer 7-segment display

Deze tutorial leert u hoe u de ESP32 gebruikt in combinatie met het TM1637 4-cijfer 7-segment display module. De volgende onderwerpen komen aan bod:

ESP32 TM1637 4-cijfer 7-segment display

In deze tutorial gebruiken we een 4-cijfer 7-segment display module met een dubbele punt als scheidingsteken. Als u kommagetallen wilt weergeven, verwijzen wij u naar de tutorial 74HC595 4-cijfer 7-segment Display Module.

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×TM1637 4-cijfer 7-segment Display
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraadjes)
1×(Optioneel) 5V voedingadapter voor ESP32
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over TM1637 4-cijfer 7-segment Display

Een 4-cijfer 7-segment display wordt vaak gebruikt voor klokken, timers, tellers, het weergeven van temperatuur enzovoorts. Normaal gesproken vereist een dergelijk display 12 aansluitingen. Het TM1637 module vereenvoudigt dit door slechts 4 aansluitingen te gebruiken: 2 voor voeding en 2 voor het aansturen van de segmenten.

Een TM1637 module bestaat gewoonlijk uit vier 7-segment LEDs en een van de volgende opties:

  • Een dubbele punt LED in het midden: Ideaal voor het weergeven van tijd in uren en minuten, minuten en seconden of de scores van twee teams.
  • Vier puntvormige LEDs, één per cijfer: Ideaal voor het tonen van temperatuur of een decimale waarde.

Pinout TM1637 4-cijfer 7-segment Display

Het TM1637 4-cijfer 7-segment display module heeft vier pinnen:

  • CLK pin: Dit is de klokingangspin die verbonden moet worden met een willekeurige digitale pin van de ESP32.
  • DIO pin: Dit is de Data I/O pin die verbonden moet worden met een willekeurige digitale pin van de ESP32.
  • VCC pin: Wordt gebruikt om het module van stroom te voorzien en moet aangesloten worden op een voedingsspanning van 3,3V tot 5V.
  • GND pin: Dit is de massa (ground) pin en dient te worden verbonden met de massa van de ESP32.
TM1637 module pinout

Aansluitschema

Om een TM1637 op een ESP32 aan te sluiten zijn vier draden nodig: twee voor de voeding en twee voor het aansturen van het display. Het module kan worden gevoed door de 5 volt uitgang van de ESP32. De CLK en DIO pinnen moeten aangesloten worden op digitale pins van de ESP32, bijvoorbeeld pin 22 en 23. Indien u andere pinnen gebruikt, moeten de pinnummers in de code worden aangepast.

ESP32 TM1637 Module aansluitschema

This image is created using Fritzing. Click to enlarge image

Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.

Bibliotheek Installatie

Om het programmeren van het TM1637 4-cijfer 7-segment display te vereenvoudigen, moeten we de TM1637Display bibliotheek van Avishay Orpaz installeren. Volg onderstaande stappen:

  • Klik op het Libraries icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek op “TM1637” en zoek de TM1637Display bibliotheek van Avishay Orpaz.
  • Klik op de knop Install.
Arduino TM1637 4-cijfer 7-segment display bibliotheek

Hoe te programmeren voor TM1637 4-cijfer 7-segment met ESP32

  • Voeg de bibliotheek toe
#include <TM1637Display.h>
  • Geef de ESP32 pinnen op die zijn verbonden met de CLK en DIO van het display module. Bijvoorbeeld GPIO22 en GPIO23.
#define CLK 22 // De ESP32 pin GPIO22 verbonden met CLK #define DIO 23 // De ESP32 pin GPIO23 verbonden met DIO
  • Maak een TM1637Display object aan.
TM1637Display display = TM1637Display(CLK, DIO);
  • Daarna kunt u nummers, nummers met decimalen, negatieve nummers of letters tonen. In het geval van letters moet u het lettertype specificeren. Laten we ze apart bekijken.
  • Nummers tonen: zie de voorbeelden hieronder. '_' staat voor een cijfer dat in de praktijk niet wordt weergegeven:
display.showNumberDec(-12); // weergegeven _-12 display.showNumberDec(-999); // weergegeven -999 display.showNumberDec(42); // weergegeven __42 display.showNumberDec(42, false); // weergegeven __42 display.showNumberDec(42, false, 2, 0); // weergegeven 42__ => toon 2 cijfers op positie 0 display.showNumberDec(42, true); // weergegeven 0042 => nul opvulling display.showNumberDec(14, false, 2, 1); // weergegeven _14_ display.showNumberDec(-5, false, 3, 0); // weergegeven _-5_ display.showNumberDec(1234); // weergegeven 1234
  • Nummer weergeven met dubbele punt of punt:
// weergegeven 15:30 op module met dubbele punt, of 15.30 met puntmodule display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

Meer informatie over de functies vindt u aan het einde van deze tutorial.

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> #define CLK 22 // The ESP32 pin GPIO22 connected to CLK #define DIO 23 // The ESP32 pin GPIO23 connected to DIO // create a display object of type TM1637Display TM1637Display display = TM1637Display(CLK, DIO); // an array that sets individual segments per digit to display the word "dOnE" const uint8_t done[] = { SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O SEG_C | SEG_E | SEG_G, // n SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E }; // degree celsius symbol const uint8_t celsius[] = { SEG_A | SEG_B | SEG_F | SEG_G, // Degree symbol SEG_A | SEG_D | SEG_E | SEG_F // C }; void setup() { display.clear(); display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest) } void loop() { // show counter 0-9 int i; for (i = 0; i < 10; i++) { display.showNumberDec(i); delay(500); display.clear(); } display.showNumberDec(-91); // displayed _-91 delay(2000); display.clear(); display.showNumberDec(-109); // displayed -109 delay(2000); display.clear(); display.showNumberDec(21, false); // displayed __21 delay(2000); display.clear(); display.showNumberDec(21, true); // displayed 0021 delay(2000); display.clear(); display.showNumberDec(28, false, 2, 1); // displayed _28_ delay(2000); display.clear(); display.showNumberDec(-9, false, 3, 0); // displayed _-9_ delay(2000); display.clear(); // displayed 15:30 display.showNumberDecEx(1530, 0b11100000, false, 4, 0); delay(2000); display.clear(); // displayed 23°C int temperature = 23; // or read from temperature sensor display.showNumberDec(temperature, false, 2, 0); display.setSegments(celsius, 2, 2); delay(2000); display.clear(); // displayed letters: dOnE display.setSegments(done); delay(2000); display.clear(); }

Snelle Stappen

Om snel aan de slag te gaan met ESP32 op de Arduino IDE, volgt u deze stappen:

  • Als u ESP32 voor het eerst gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 op Arduino IDE.
  • Maak de aansluitingen zoals in bovenstaande afbeelding.
  • Verbind de ESP32 met uw pc via een micro USB-kabel.
  • Open de Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 bord (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Compileer en upload de code naar het ESP32 bord door op de knop Upload te klikken.
Arduino IDE Code Upload
  • Controleer de werking van het 7-segment display.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Functie Referenties

Hieronder vindt u de referenties van de volgende functies:

  • display.clear()
  • display.showNumberDec()
  • display.showNumberDecEx()
  • display.setSegments()
  • display.setBrightness()

display.clear()

Beschrijving

Deze functie maakt het display leeg. Alle LEDs worden uitgezet.

display.showNumberDec()

Beschrijving

Het 7-segment display wordt gebruikt om een decimaal getal te tonen. Deze functie wordt daarvoor gebruikt.

Syntax

void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Parameters

  • num: de waarde die op het 7-segment display moet worden getoond, van -9999 tot 9999.
  • leading_zero: optionele parameter, standaard false. Geeft aan of voorloopnullen worden weergegeven.
  • length: optionele parameter, standaard 4. Het aantal cijfers dat moet worden weergegeven.
  • pos: optionele parameter, standaard 0. De positie van het meest significante cijfer.

Let op: de functie toont niets als het nummer buiten het bereik valt of als de lengte groter is dan 4.

showNumberDecEx()

Beschrijving

Dit is een uitgebreidere versie van showNumberDec(), waarmee meer controle is over de weergave van decimale getallen op het 7-segment display. Hiermee kunt u de punt- of dubbele punt-segmenten per cijfer apart aansturen.

Syntax

void showNumberDecEx(int num, uint8_t dots, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Parameters

  • num: Het getal dat op het 7-segment display moet worden weergegeven, tussen -9999 en 9999.
  • dots: Specificeert welke punten/dubbele punten aan moeten staan. Elk bit in de waarde correspondeert met een cijfer op het display. Mogelijke waarden zijn:
    • 0b10000000 voor de eerste punt (0.000)
    • 0b01000000 voor de tweede punt (00.00) of dubbele punt (00:00), afhankelijk van het type module.
    • 0b00100000 voor de derde punt (000.0)
  • leading_zero: Optioneel, standaard false. Toon voorloopnullen als true.
  • length: Optioneel, standaard 4. Aantal cijfers die weergegeven moeten worden.
  • pos: Optioneel, standaard 0. Positie van het meest significante cijfer.

Voorbeeld: Als u display.showNumberDecEx(1530, 0b01000000) gebruikt, dan wordt:

  • Nummer 15:30 getoond op een module met dubbele punt LED.
  • Nummer 15.30 getoond op een module met puntvormige LEDs.

Let op: de functie toont niets als het nummer buiten het bereik valt of de lengte groter is dan 4.

setSegments()

Beschrijving

Met deze functie kunt u rechtstreeks de segmenten van het 7-segment display aansturen. Handig om letters, speciale tekens te tonen of alle LEDs uit te schakelen.

Syntax

void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);

Parameters

  • segments: Array van bytes waarin de segmenten voor elk cijfer worden gespecificeerd. Iedere byte bepaalt welke segmenten van dat cijfer aan of uit zijn, elk segment is een bit in de byte.
  • length: Optioneel, standaard 4. Aantal cijfers dat moet worden weergegeven.
  • pos: Optioneel, standaard 0. Positie van het meest significante cijfer.

Deze functie is handig om tekens of symbolen weer te geven die niet standaard in het 7-segment display voorkomen. U stelt de segmenten direct in om een patroon te maken.

Let op: er wordt niets getoond als het nummer buiten bereik valt of de lengte groter is dan 4.

setBrightness()

Beschrijving

Met deze functie stelt u de helderheid van het 7-segment display in.

Syntax

void setBrightness(uint8_t brightness, bool on = true);

Parameters

  • brightness: De helderheid van het display, een waarde tussen 0 en 7, waarbij 7 de hoogste helderheid is.
  • on: Optioneel, standaard true. Zet het display aan of uit. Bij false wordt het display uitgeschakeld.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!