Arduino4 digits 7-segment LED display

Een project voor de aansluiting van een 4 digits 7-segment LED display. Dit is dus een component met daarop 4 keer een 7-segment LED display's aan elkaar gekoppeld. De aansturing ervan gaat wat anders als bij het enkelvoudige 7-segment LED display.

De aansturing hiervan is wat complex, daarom gebruiken we hiervoor een Library. Een library is een hoeveelheid functies die iemand heeft geschreven en in een mooi pakket heeft verpakt. Dit pakket functies nemen we op binnen ons project. We kunnen dan al dat moois gemakkelijk gebruiken. De library staat op https://github.com/DeanIsMe/SevSeg. Voor info hoe je een library moet laden zie hier.



ArduinoBreadboard



ArduinoSketch
/*
  4 digits 7-segment LED display

  www.punthooft.nl
*/

#include "SevSeg.h"


// Constants
const byte numDigits = 4;
const byte digitPins[] = {2, 3, 4, 5};
const byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};

// Variable
SevSeg sevseg; //Initiate a seven segment controller object
int miniloop = 0;
int counter = 0;
bool actionNeeded = false;

// Setup function runs once when powerup the board and on reset 
void setup() {

  // Initiate the object
  sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);

  // Set brughtness of the display
  sevseg.setBrightness(100);
}


// The loop function runs over and over again forever
void loop() {

  // Update the miniloop counter
  miniloop++;

  // If miniloopcounter is large, reset and indicate that action is needed
  if (miniloop > 5000) {
    miniloop = 0;
    actionNeeded = true;
  }

  // Do only if action is needed
  if (actionNeeded) {
    // Tel een bij de counter op
    counter++;

    // Als de waarde groter is dan 9999, zet de waarde dan weer op 0
    if (counter>9999) {
      counter = 0;
    }

    // Reset for next cycle
    actionNeeded = false;
  }

  // Display value.
  sevseg.setNumber(counter, 0);
  
  // Update the display, must be done repeatedly
  sevseg.refreshDisplay(); 

}


ArduinoOpmerkingen

De gebruikte weerstand is van 220 Ohm.

Een vreemde eend in de bijt is de refreshDisplay() onderin de code. Met dit commando geven we de library opdracht om de display te tekenen. Dit moet continue gebeuren. Als we op de regel erna een delay(100) inbouwen dan zien we hoe het opbouwen van de display gebeurd. Iedere led van de cijfers zal los worden getekend.



ArduinoLibrary

Voor de aansturing van het display gebruiken we de SevSeg library. Na het include commando maken we een object aan:

SevSeg sevseg;

In de library staat een class beschreven van het type SevSeg (let op de hoofdletters!). In onze code maken we een object (variable) aan sevseg (kleine letters) van het type SevSeg (let op de hoofdletters!). Dit is niet heel veel anders als het commando op de lijn eronder

int counter = 0;

Hier maken we een variable aan met de naam counter (vergelijk sevseg) en van het type int (integer) een getal, en wij gebruiken een class SevSeg. Het verschil is echter dat we de waarde counter meteen op 0 zetten. Ons object sevseg geven we in de setup waarden mee:

sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);

En daar zetten we ook de helderheid van het scherm.




Lees Verder in deze categorie

Copyright 2018 www.punthooft.nl

We do not collect cookies for advertisement. Your data is never send to third parties.