maxresdefault

Display MAX7219 a 7 segmenti da 8 caratteri con la scheda ESP8266/Wemos D1 Mini

Oggi vi mostrerò come utilizzare un display a 7 segmenti da 8 caratteri con la scheda ESP8266/Wemos D1 Mini per visualizzare dei numeri.

Il display che andremo a collegare alla nostra scheda Wemos D1 Mini è il seguente di cui vi lascio il link Amazon per l’eventuale acquisto.

HiLetgo 2pcs MAX7219 8 Bits Digital Segment LED Display Tube Module 5V/3.3V for Arduino 51/AVR/STM32

Per collegare lo schermo al Wemos utilizzeremo il seguente schema, molto semplice.

Sullo schermo sono presenti 5 collegamenti che andranno collegati alla scheda Wemos D1 Mini in questo modo:

SCHERMO Vcc -> Wemos D1 Mini 5V
SCHERMO GND -> Wemos D1 Mini Ground
SCHERMO Din -> Wemos D1 Mini Pin D8
SCHERMO CS -> Wemos D1 Mini Pin D6
SCHERMO CLK -> Wemos D1 Mini Pin D7

Una volta collegato come mostrato poco fà il display è pronto per essere utilizzato e quindi passiamo subito al codice:

#include <LedControl.h>  // Libreria per controllare il display MAX7219 7-segmenti

// MAX7219 Pin e Configurazioni
#define dinPin     D8
#define clkPin     D7
#define csPin      D6
#define numDevices  1   // Un controller MAX7219 da 8 cifre
#define dispAddr    0   // I dispositivi MAX7219 sono numerati a partire da 0

// crea un'interfaccia di controllo del display a LED
LedControl led_disp = LedControl(dinPin, clkPin, csPin, numDevices);

unsigned long Number;                    	// il numero che andremo a visualizzare
byte  digits[] = {0, 0, 0, 0, 0, 0, 0, 0};  // array che conterrà le cifre da visualizzare

unsigned long api_mtbs     = 180000;  // tempo tra le richieste, in MS. 60.000 mS = intervalli di 1 minuto
unsigned long api_lasttime = 0;       // ultima volta in cui si è verificata una richiesta


void setup() {
  Serial.begin(9600);

  // inizializza il dispositivo MAX7219
  led_disp.shutdown(dispAddr, false);   // riattivare il MAX7219 dalla modalità di risparmio energetico
  led_disp.setIntensity(dispAddr, 8);   // imposta il livello di luminosità (0-15)
  led_disp.clearDisplay(dispAddr);      // cancella registro display

}

void loop() { 
  testDisplay();    // funzione che scrive dei numeri sul display
}

// mostra il numero sul display a 7 segmenti separando le
// singole cifre e inviandole al diplay LED appropriato
void displayDigits() {

  // separa le cifre dal numero
  digits[0] = (Number % 10);
  digits[1] = (Number / 10) % 10;
  digits[2] = (Number / 100) % 10;
  digits[3] = (Number / 1000) % 10;
  digits[4] = (Number / 10000) % 10;
  digits[5] = (Number / 100000) % 10;
  digits[6] = (Number / 1000000) % 10;
  digits[7] = (Number / 10000000) % 10;


  // tiene traccia della posizione della cifra nel numero che contiene la cifra più a sinistra (diversa da zero)
  // ad es .: numero = 474, cifre [7..0] = 00000474 cifra sinistra posizione diversa da zero = cifra [2]
  // se nel numero è presente una sola cifra, la posizione della cifra 0 è quella più a sinistra automaticamente
  byte leftDigit = 0;

  if (digits[7] > 0)
    leftDigit = 7;
  else if (digits[6] > 0)
    leftDigit = 6;
  else if (digits[5] > 0)
    leftDigit = 5;
  else if (digits[4] > 0)
    leftDigit = 4;
  else if (digits[3] > 0)
    leftDigit = 3;
  else if (digits[2] > 0)
    leftDigit = 2;
  else if (digits[1] > 0)
    leftDigit = 1;

  // se ci sono cifre da cancellare (a sinistra della cifra più a sinistra nel numero)
  // impostali come "spazio"
  if (leftDigit < 7) {
    for (int i = (leftDigit + 1); i <= 7; i++) {
      digits[i] = ' ';  // blank space character
    }
  }

  // scrive tutte le cifre sul display a 7 segmenti
  for (int i = 0; i <= 7; i++)
    led_disp.setChar(dispAddr, i, digits[i], false);

}

void testDisplay() {

  // verifica l'eliminazione dello o degli zero iniziali
  
  Number = 1;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 22;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 333;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 4444;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 55555;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 666666;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 7777777;
  displayDigits(); // Mostra i dati
  delay(300);

  Number = 88888888;
  displayDigits(); // Mostra i dati
  delay(300);
}

Il codice è commentato e quindi non credo ci saranno grossi problemi ad utilizzarlo e a capirlo ma in caso scrivetemi pure nei commenti.

Ok, per oggi è tutto e nel prossimo articolo vedremo invece come utilizzare il display MAX7219 a 7 segmenti da 8 caratteri con la scheda ESP8266/Wemos D1 Mini per scrivere lettere e testi!.

Buona giornata, alla prossima!

21 commenti su “Display MAX7219 a 7 segmenti da 8 caratteri con la scheda ESP8266/Wemos D1 Mini”

  1. Unquestionably believe that which you said.
    Your favorite justification seemed to be on the web the simplest thing to
    be aware of. I say to you, I certainly get irked while people consider
    worries that they just do not know about.
    You managed to hit the nail upon the top as well as defined out the whole thing
    without having side-effects , people can take a signal.

    Will probably be back to get more. Thanks

  2. Excellent read, I just passed this onto a colleague who was doing some research on that. And he actually bought me lunch as I found it for him smile Thus let me rephrase that: Thank you for lunch! “A human being has a natural desire to have more of a good thing than he needs.” by Mark Twain.

  3. I really love your site.. Great colors & theme.
    Did you make this amazing site yourself? Please reply back as
    I’m looking to create my very own website and want to learn where you got this from or exactly what the
    theme is named. Thank you!

  4. Nicholas Backstrom et Alex Ovechkin avaient été dominent les Islanders jusqu’à ce qu’ils ont été fermées dans Jeux 5 et 6; ils auront besoin de se présenter pour obtenir leur équipe pour Le Land.

  5. Peut-être pas encore, mais quand vous jouez dans une Conférence Ouest dur comme le font les Lakers, une aide extérieure pourrait être ce qui est l’entra?neur Byron Scott needed.

  6. Mais même si les choses deviennent difficiles pour moi, et les choses ont été difficiles, je ne l’ai pas renoncé à mes rêves et ce que je veux.

  7. Barcelone ne sera pas en mesure de mettre à niveau au cours des deux prochaines fenêtres de transfert, pla?ant même fardeau plus lourd sur Messi à Barcelone deliver.

  8. Merci à Richard Sherman, Byron Maxwell, Earl Thomas et Kam Chancellor, les Seahawks ont ce qui semble être le Super Bowl d’un imbattable secondary.

  9. ?La rumeur avait couru que la rupture Janvier entre Cristiano Ronaldo et Irina Shayk est venu parce que le mannequin russe avait une retombée avec relatives.

  10. Si vous êtes encore indécis sur qui de rédiger dans la deuxième ou au début du troisième tour, alors vous devriez envisager la rédaction d’DeRozan.

  11. PredictionsAlmost tous les signes pointent vers une victoire des Packers; les Packers ont trois victoires de plus, ils sont sur un jeu de quatre victoires de suite et les Saints sont stables à 2-4 vient de conna?tre une perte pour les Lions de Detroit.

  12. FIFA a publié un résumé de 42 pages expurgée des résultats définitifs de l’enquête, mais Garcia rapidement dénoncé le résumé, en disant qu’il avait ‘représentations erronées des faits et les conclusions.

  13. Selon Marc Stein de ESPN, les Lakers vont être très actif sur le front du commerce avant la date limite en Février, avec des sources indiquant que Los Angeles pourrait envisager de trading Steve Nash.

  14. Surprisingly, malgré les deux équipes payants dans l’AFC, les Steelers et les Texans ont pas joué l’autre depuis 2011: Les Texans de Houston Texans se trouvent actuellement 3-3 après six jeux de jeu, mais ils ont perdu trois de leurs quatre derniers matchs.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna su