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!