HC7Sec Lib

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

Nell’ultimo post abbiamo visto come collegare un display MAX7219 da 8 caratteri alla scheda wemos D1 mini e visualizzare dei numeri.

In questo post invece voglio farvi vedere come potremo usare lil display per visualizzare dei brevi (massimo 8 caratteri) messaggi di testo. Ovviamente con delle limitazioni dettate dalla natura del display pensato principalmente per visualizzare numeri però il risultato è simpatico, non sempre magnifico ma simpatico…

Vi lascio il codice che come sempre è commentato:

#include "LedControl.h"

// 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

LedControl led_disp = LedControl(dinPin, clkPin, csPin, numDevices);

// Array di tutti i possibili caratteri
const int arysz = 52;
char letters[arysz] {'A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z'};
byte value[arysz]{0x77,0x7D,0x7F,0x1F,0x4E,0x0D,0x7E,0x3D,0x4F,0x6f,0x47,0x47,0x5E,0x7B,0x37,0x17,0x30,0x10,0x3C,0x38,0x37,0x17,0x0E,0x06,0x55,0x55,0x15,0x15,0x7E,0x1D,0x67,0x67,0x73,0x73,0x77,0x05,0x5B,0x5B,0x46,0x0F,0x3E,0x1C,0x27,0x23,0x3F,0x2B,0x25,0x25,0x3B,0x33,0x6D,0x6D};

byte toPrint[8];

byte retChar(char wantedval){
  int wantedpos;
  for (int i=0; i < arysz; i++) {
   if (wantedval == letters[i]) {
     wantedpos = i;
     return value[i];
   }
  }
}

void retString(String str, byte toPrint[]){
  int str_len = str.length() + 1;
  char char_array[str_len];
  String char_values[str_len];  
   
  str.toCharArray(char_array, str_len);
  for (int i = 0; i < str_len-1 ; i++) {
    char_values[i] = retChar(char_array[i]);
    toPrint[i] = retChar(char_array[i]);;
    //Serial.print(char_array[i]); Serial.print(" -> "); Serial.println(retChar(char_array[i]));
  } 
  
  for (int i = 0; i <= 7; i++){
    int x = 7 - i;
    Serial.print("i: "+ i); Serial.print(" x: "+ i); Serial.println(toPrint[x]);
    led_disp.setRow(dispAddr, i, toPrint[x]);
  }
 
}

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, 15);   // imposta il livello di luminosità (0-15)
  led_disp.clearDisplay(0);      // cancella registro display
  
}

void loop() {
  
    String str[] = {"Arduino"};               // Array che contiene i testi da visuallizzare di massimo 8 caratteri
    retString(str[0], toPrint);               // Chiamo la funzione per la visualizzazione
    delay(3000);                              // Attendo 3 secondi
    scrollDigits();
    led_disp.clearDisplay(0);                 // cancella registro display
                 
}

La funzione retString è quella che realmente scrive il testo quindi basterà chiamarla in questo modo

String str[] = {"Arduino"};               // Array che contiene i testi da visuallizzare di massimo 8 caratteri
retString(str[0], toPrint);               // Chiamo la funzione per la visualizzazione

ricordandosi che la stringa non può essere più lunga di 8caratteri.

Buon codice a tutti!

1 commento su “Display MAX7219 a 7 segmenti da 8 caratteri con la scheda ESP8266/Wemos D1 Mini per visualizzare del testo”

  1. Thanks for sharing superb informations. Your site is so cool. I am impressed by the details that you have on this blog. It reveals how nicely you understand this subject. Bookmarked this website page, will come back for more articles. You, my friend, ROCK! I found just the info I already searched all over the place and just could not come across. What a perfect web site.

Lascia un commento

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

Torna su