Arduino - TM1637 4-cijferig 7-segmentendisplay

Een standaard 4-cijferig 7-segmentendisplay is vaak nodig voor klok-, timer- en tellerprojecten, maar meestal zijn hiervoor 12 verbindingen vereist. De TM1637-module maakt het eenvoudiger door slechts 4 verbindingen nodig te hebben: 2 voor voeding en 2 voor het aansturen van de segments.

Deze handleiding zal u niet overladen met diepgaande hardwaredetails. In plaats daarvan leren we hoe we het 4-cijferig 7-segmentendisplay aansluiten op Arduino en hoe we het programmeren om precies te tonen wat we willen.

Arduino TM1637 4-digit 7-segment display

Deze tutorial maakt gebruik van het met een dubbele punt gescheiden 4-cijferig 7-segmentendisplay module. Wilt u float-getallen weergeven, gebruik dan de 74HC595 4-digit 7-segment Display Module.

Hardware Required

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×TM1637 4-cijferig 7-segmentendisplay (met dubbele punt)
1×Jumperdraden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

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-cijferig 7-segmentendisplay

Een TM1637-module bestaat doorgaans uit vier 7-segment LED’s en een dubbele punt LED in het midden. Deze module is ideaal voor het weergeven van tijd in uren en minuten, minuten en seconden, of scores van twee teams.

Pinout

De TM1637 4-cijferig 7-segmentendisplay module heeft 4 pins:

  • CLK-pin: is de klok-ingangspin. Verbind deze met een willekeurige digitale pin op de Arduino.
  • DIO-pin: is de Data In/Output pin. Verbind met een willekeurige digitale pin op de Arduino.
  • VCC-pin: voedt de module. Verbind met een voedingsspanning tussen 3,3V en 5V.
  • GND-pin: is de ground-pin (aarde).
TM1637 module pinout

Bedradingsschema

Voor het aansluiten van een TM1637 op een Arduino gebruikt u vier draden: twee voor voeding en twee voor het aansturen van de display. De module kan gevoed worden via de 5V uitgang van de Arduino. Verbind de CLK- en DIO-pins met twee digitale pins van de Arduino, bijvoorbeeld pin 2 en 3. Indien u andere pins gebruikt, moet u de pin-nummers in de code aanpassen.

Arduino TM1637 Module Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Bibliotheekinstallatie

Om gemakkelijk te programmeren voor het TM1637 4-cijferig 7-segmentendisplay, moet u de TM1637Display bibliotheek van Avishay Orpaz installeren. Volg onderstaande stappen:

  • Ga in de Arduino IDE naar het icoon Libraries in de linker balk.
  • Zoek op “TM1637” en vind de TM1637Display bibliotheek van Avishay Orpaz.
  • Klik op de Installeren knop.
Arduino TM1637 4-digit 7-segment display library

Hoe TM1637 4-cijferig 7-segment te programmeren met Arduino

  • Voeg de bibliotheek toe
#include <TM1637Display.h>
  • Definieer de Arduino-pinnen die verbonden zijn met CLK en DIO van het display. Bijvoorbeeld pin D9 en D10:
#define CLK 9 #define DIO 10
  • Maak een display-object van het type TM1637Display aan:
TM1637Display display = TM1637Display(CLK, DIO);
  • Vervolgens kunt u een nummer, nummer met decimaal, nummer met minteken of letters weergeven. Voor letters moet u het letterpatroon definiëren. Hieronder bespreken we deze mogelijkheden.
  • Nummer weergeven: zie onderstaande voorbeelden. Het teken '_' staat voor een cijfer waarop niets wordt weergegeven:
display.showNumberDec(-12); // wordt weergegeven als _-12 display.showNumberDec(-999); // wordt weergegeven als -999 display.showNumberDec(42); // wordt weergegeven als __42 display.showNumberDec(42, false); // wordt weergegeven als __42 display.showNumberDec(42, false, 2, 0); // wordt weergegeven als 42__ => toont 2 cijfers beginnend vanaf positie 0 display.showNumberDec(42, true); // wordt weergegeven als 0042 => nullen vooraan ingevuld display.showNumberDec(14, false, 2, 1); // wordt weergegeven als _14_ display.showNumberDec(-5, false, 3, 0); // wordt weergegeven als _-5_ display.showNumberDec(1234); // wordt weergegeven als 1234
  • Nummer met dubbele punt of punt weergeven:
// wordt weergegeven als 15:30 in module met dubbele punt, of 15.30 in variant met punt display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

Voor meer details kunt u de functie-referenties aan het einde van deze handleiding raadplegen.

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-tm1637-4-digit-7-segment-display */ #include <TM1637Display.h> // define the connections pins #define CLK 9 #define DIO 10 // 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

  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Bekijk de status van het 7-segmentendisplay

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.

Functiereferenties

Hieronder vindt u de referenties van de volgende functies:

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

display.clear()

Beschrijving

Deze functie wist het display. Het zet alle LEDs uit.

display.showNumberDec()

Beschrijving

Deze functie wordt gebruikt om een decimaal getal weer te geven op het 7-segmentendisplay.

Syntax

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

Parameters

  • num: Het getal dat op het 7-segmentendisplay moet worden getoond. Dit moet binnen het bereik van -9999 tot 9999 liggen.
  • leading_zero: Optionele parameter (standaard false). Indien op true gezet, worden voorloopnullen weergegeven.
  • length: Optionele parameter (standaard 4). Hiermee stelt u het aantal cijfers in dat getoond wordt.
  • pos: Optionele parameter (standaard 0). Hiermee stelt u de positie in van het meest significante cijfer van het getal.

Let op: als het getal buiten bereik is of als length groter is dan 4, wordt er niets weergegeven.

display.showNumberDecEx()

Beschrijving

Deze functie is een uitbreide versie van showNumberDec(). Hiermee kunt u ook afzonderlijke punten of dubbele punten (colon) op de digits 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 getoond moet worden, tussen -9999 en 9999.
  • dots: Hiermee bepaalt u welke punten/kolommen aanstaan. Iedere bit komt overeen met een digit:
    • 0b10000000: eerste punt aan (vormt getal als 0.000)
    • 0b01000000: tweede punt aan (00.00)
    • 0b00100000: derde punt aan (000.0)
    • 0b01000000: voor displays met alleen dubbele punt (colon), toont 00:00
  • leading_zero: Optioneel, standaard false. Indien true, worden voorloopnullen getoond.
  • length: Optioneel, standaard 4. Aantal cijfers dat wordt getoond.
  • pos: Optioneel, standaard 0. Positie van het meest significante cijfer.

Bijvoorbeeld, display.showNumberDecEx(1530,0b01000000); toont 15:30 op het display.

Let op: als het getal buiten bereik is of length groter is dan 4, wordt er niets weergegeven.

display.setSegments()

Beschrijving

Met deze functie stelt u handmatig de segmenten van het 7-segmentendisplay in. Hiermee kunt u letters, speciale tekens of alle segments aanzetten.

Syntax

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

Parameters

  • segments: Een array van bytes waarin elke byte de segmenten voor één cijfer representeert. Elk bit staat voor een segment.
  • length: Optioneel, standaard 4. Aantal cijfers dat wordt getoond.
  • pos: Optioneel, standaard 0. Positie van het meest significante cijfer.

Deze functie is handig voor het weergeven van tekens of symbolen die niet standaard in het 7-segment voorkomen.

Let op: als het getal buiten bereik is of length groter is dan 4, wordt er niets weergegeven.

display.setBrightness()

Beschrijving

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

Syntax

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

Parameters

  • brightness: Het helderheidsniveau tussen 0 (dof) en 7 (helder). Hogere waarde betekent helderder display.
  • on: Optioneel, standaard true. Hiermee schakelt u het display aan of uit. False schakelt het display uit.

※ 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!