Arduino Nano - TM1637 4-Cijfer 7-Segment Display

Deze handleiding leert u hoe u de Arduino Nano gebruikt met het 4-cijfer 7-segment display, het TM1637-module. In detail leert u:

Arduino Nano TM1637 4-digit 7-segment display

In deze handleiding gebruiken we een 4-cijfer 7-segment display module met een dubbele punt als scheidingsteken. Wilt u drijvende komma getallen tonen, raadpleeg dan de 74HC595 4-digit 7-segment Display Module tutorial.

Hardware Vereist

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×TM1637 4-cijfer 7-segment Display
1×Jumper Draden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 en het weergeven van temperatuur… Meestal zijn hiervoor 12 verbindingen nodig. Het TM1637-module vereenvoudigt dit doordat het slechts 4 verbindingen nodig heeft: 2 voor stroomvoorziening en 2 voor het aansturen van de segmenten.

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

  • Een dubbele punt (colon) LED in het midden: ideaal voor het weergeven van tijd in uren en minuten, minuten en seconden, of scores van twee teams.
  • Vier punt-LED's, één voor elk cijfer: ideaal voor het weergeven van temperatuur of elke decimale waarde.

De TM1637 4-Cijfer 7-Segment Display Pinout

Verbind deze met de massa (ground) van de stroomvoorziening.

TM1637 heeft vier pinnen:

  • CLK pin: een klok input pin die aangesloten wordt op een digitale pin van de Arduino Nano.
  • DIO pin: een Data I/O pin die aangesloten wordt op een digitale pin van de Arduino Nano.
  • VCC pin: levert stroom aan het module en wordt aangesloten op 3.3V tot 5V voeding.
  • GND pin: aardingspin die verbonden wordt met de massa (ground) van de voeding.
TM1637 Module pinout

Bedradingsschema

Om een TM1637 aan te sluiten op een Arduino Nano moeten vier draden verbonden worden: twee voor stroomvoorziening en twee voor het aansturen van het display. Het module kan gevoed worden via de 5-volt uitgang van de Arduino Nano. De CLK en DIO pinnen moeten verbonden worden met twee digitale pinnen van de Arduino Nano, bijvoorbeeld pinnen 2 en 3. Gebruikt u andere pinnen, dan moeten de pin nummers in de code aangepast worden.

Arduino Nano TM1637 Module wiring diagram

This image is created using Fritzing. Click to enlarge image

Bibliotheek Installatie

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

  • Klik op het Bibliotheken icoon in de linker balk van de Arduino IDE.
  • 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 te Programmeren voor TM1637 4-cijfer 7-segment met Arduino Nano

  • Voeg de bibliotheek toe.
#include <TM1637Display.h>
  • Geef de Arduino Nano pinnen aan die verbonden zijn met de CLK en DIO van het display module, bijvoorbeeld pinnen D9 en D10.
#define CLK 9 #define DIO 10
  • Maak een object aan van de TM1637Display klasse.
TM1637Display display = TM1637Display(CLK, DIO);
  • Nu kunt u een getal, een getal met decimaal, een getal met min-teken of een letter weergeven. In het geval van een letter moet u de vorm van de letter definiëren. We bekijken elk voorbeeld apart.
  • Getal weergeven: zie voorbeeld hieronder. Het teken '_' staat voor een cijfer dat in praktijk niets weergeeft:
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__ => 2 cijfers weergeven vanaf positie 0 display.showNumberDec(42, true); // weergegeven 0042 => met voorloopnullen display.showNumberDec(14, false, 2, 1); // weergegeven _14_ display.showNumberDec(-5, false, 3, 0); // weergegeven _-5_ display.showNumberDec(1234); // weergegeven 1234
  • Toon het getal met een dubbele punt (colon) of punt:
// weergegeven 15:30 bij een module met dubbele punt, of 15.30 bij een module met punt LEDs display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

Meer informatie vindt u in de functie-referenties aan het einde van deze handleiding.

Arduino Nano Code

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-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(); }

Snelstappen

  • Kopieer de code en open deze met de Arduino IDE.
  • Klik op de Upload knop in de Arduino IDE om de code te compileren en te uploaden naar de Arduino Nano.
  • 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 wist het display volledig. Het schakelt alle LEDs uit.

display.showNumberDec()

Beschrijving

Het 7-segment display wordt gebruikt om een decimaal getal weer te geven. Deze functie doet dat.

Syntax

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

Parameters

  • num: de waarde die getoond moet worden op het 7-segment display, tussen -9999 en 9999.
  • leading_zero: een optionele parameter (standaard false). Hiermee bepaalt u of voorloopnullen getoond worden.
  • length: een optionele parameter (standaard 4). Hiermee stelt u het aantal weergegeven cijfers in.
  • pos: een optionele parameter (standaard 0). Hiermee geeft u de positie van het meest significante cijfer aan.

Wees ervan bewust dat de functie niets zal tonen als het getal buiten het bereik ligt of als length groter dan 4 is.

showNumberDecEx()

Beschrijving

Deze functie is een uitbreiding van showNumberDec() en biedt meer controle voor het weergeven van decimale getallen op het 7-segment display. Het kan de punt of dubbele punt segmenten van elk cijfer afzonderlijk aansturen.

Syntax

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

Parameters

  • num1: het getal dat weergegeven moet worden op het 7-segment display, binnen het bereik van -9999 tot 9999.
  • dots: hiermee geeft u aan welke segmenten als puntjes aan moeten staan. Elk bit van de waarde hoort bij een cijfer op het display. Mogelijke waarden zijn:
    • 0b10000000 voor de eerste punt (0.000)
    • 0b01000000 voor de tweede punt (00.00), of de dubbele punt (00:00), afhankelijk van het type module.
    • 0b00100000 voor de derde punt (000.0)
  • leading_zero: optioneel, standaard false. Zet u deze op true, dan worden voorloopnullen getoond.
  • length: optioneel, standaard 4. Geeft het aantal weer te geven cijfers aan.
  • pos: optioneel, standaard 0. Geeft de positie van het meest significante cijfer aan.

Als voorbeeld toont display.showNumberDecEx(1530, 0b01000000) het volgende:

  • Het getal 15:30 als de module een dubbele punt LED heeft.
  • Het getal 15.30 als de module punt-LEDs heeft.

Houd er rekening mee dat de functie niets toont als het getal buiten bereik ligt of als length groter is dan 4.

setSegments()

Beschrijving

Met deze functie kunt u rechtstreeks de segmenten van het 7-segment display instellen. Het is handig om letters, speciale tekens weer te geven, of om alle LEDs uit te schakelen.

Syntax

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

Parameters

  • segments: een array met bytes die de segmenten van elk cijfer representeren. Elk segment correspondeert met een bit in de byte.
  • length: optioneel, standaard 4. Het aantal weer te geven cijfers.
  • pos: optioneel, standaard 0. De positie van het meest significante cijfer.

Deze functie is erg handig als u tekens of symbolen wilt tonen die niet standaard ondersteund worden op het 7-segment display. U kunt hiermee zelf patronen maken door segmenten rechtstreeks in te stellen.

Let op: de functie toont niets als length groter is dan 4 is.

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, van 0 (minimaal) tot 7 (maximaal). Hogere waarde betekent feller licht.
  • on: optioneel, standaard true. Hiermee zet u het display aan of uit. Zet u deze op false, dan 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!