WEMOS MatrixLED shield per WeMos D1 mini e D1 Mini Pro

ultimo aggiornamento 27 febbraio 2022


 


Indice

Descrizione

Il WEMOS Matrix LED shield per Wemos D1 Mini è appositamente progettato per essere utilizzato con le schede Wemos D1 Mini e Wemos D1 Mini Pro, può essere utilizzato per creare immagini, un testo scorrevole e altro. Il controllo della matrice di led è affidata al chip TM1640.

 

 

NOTA: per nuova versione dell'articolo vedere WEMOS Matrix LED shield – Wemos D1 Mini

 

Dove trovare il modulo

Lo shield può essere acquistato sul sito HOMOTIX codice WEMATR. Se lo acquisterete presso il sito potrete usufruire di uno sconto inserendo l'apposito codice di sconto

homotix

Wemos D1 mini

Wemos D1 mini Pro

 

Caratteristiche

Tensione di alimentazione

 5 Vcc

 

8 livelli di intensità regolabile

 

LED a matrice di punti 8 × 8

Pin utilizzati

D5 CLK,  D7 DIN

 

Circuito elettrico

 

I pin utilizzati per l'interfacciamento tra il modulo Wemos D1 Mini e il WEMOS Matrix LED shield sono quelli di alimentazione 5V, +3,3V GND e quello D5 e D7 per il segnali

dato che il Wemos D1 Mini accetta segnali con livello a 3,3V mentre l'integrato TM1640 che pilota la matrice di led ha segnali a 5V, è presente una parte di circuito che serve per "traslare" i segnali tra i due livelli di tensione, il circuito utilizza dei transistor di tipo FET tipo BSS138.

 

 

 

BSS138 - Power MOSFET 200 mA, 50 V N−Channel SOT−23
  

Codice RS - 545-2529
Piedinatura Datasheet Foto

 

Per pilotare la matrice di led è utilizzato un circuito tipo TM1640, si tratta di un drive specifico per LED (Light Emitting Diode Display) che integra una MCU di interfaccia digitale, latch digitale, circuito di pilotaggio ad alta tensione LED, ecc.
Alcune sue caratteristiche

 

 

TM1640 LED Drive Control Circuit
Piedinatura Datasheet Foto dell'integrato

 

La matrice 8x8 a led è il tipo 788AS, misura 20x20 mm con led tondi da 1,9mm

 

 

788AS Matrice di led 8x8
Piedinatura Datasheet Foto

Creazione dei simboli da mostrare sulla matrice

Per la creazione dei simboli, numeri o altro ancora vi consiglio un semplice programma, chiamato LED Matrix Editor, è uno strumento online per la modifica e la creazione di animazioni per matrici LED 8x8. È gratuito e facile da usare.

Istruzioni d'uso

Test del modulo

Per l'utilizzo del modulo è necessario scaricare l'apposita libreria dal sito a questo link, per il test il modulo è stato montato su una Tripler Base

Tripler Base Wemos D1 Mini Battery Shield Matrix LED shield

 

Programma

test_matrix_led_shield.ino

/*
  test_matrix_led_shield.ino
  Lo sketch effettua un test del MatrixLED shield specifico per
  il modulo Wemos D1 mini

  Sono utilizzati i seguenti pin
  Pin +3.3V -> +3.3V
  Pin +5V   -> +5V
  Pin GND   -> GND
  Pin D5    -> SCK
  Pin D7    -> MOSI

  Creato il 24/13/2019 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog https://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <WEMOS_Matrix_LED.h>
MLED mled(5); //set intensity=5

byte faccia_1[8] = {0b00000000, 0b01100110, 0b01100110, 0b00011000, 0b00011000, 0b00000000, 0b00111100, 0b01000010};
byte faccia_2[8] = {0b00000000, 0b01100110, 0b01100110, 0b00011000, 0b00011000, 0b00000000, 0b01111110, 0b00000000};
byte faccia_3[8] = {0b00000000, 0b01100110, 0b01100110, 0b00011000, 0b00011000, 0b01000010, 0b00111100, 0b00000000};
byte spazio_Char[8] = {0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000, 0b0000000};
byte A_Char[8] = {0b0000000, 0b0111100, 0b1100110, 0b1100110, 0b1111110, 0b1100110, 0b1100110, 0b1100110};
byte B_Char[8] = {0b0000000, 0b1111100, 0b1100110, 0b1100110, 0b1111100, 0b1100110, 0b1100110, 0b1111100};
byte D_Char[8] = {0b0000000, 0b1111100, 0b1100110, 0b1100110, 0b1100110, 0b1100110, 0b1100110, 0b1111100};
byte I_Char[8] = {0b0000000, 0b0111100, 0b0011000, 0b0011000, 0b0011000, 0b0011000, 0b0011000, 0b0111100};
byte O_Char[8] = {0b0000000, 0b0111100, 0b1100110, 0b1100110, 0b1100110, 0b1100110, 0b1100110, 0b0111100};
byte R_Char[8] = {0b0000000, 0b1111100, 0b1100110, 0b1100110, 0b1111100, 0b1111000, 0b1101100, 0b1100110};
byte T_Char[8] = {0b0000000, 0b1111110, 0b1011010, 0b0011000, 0b0011000, 0b0011000, 0b0011000, 0b0011000};
byte W_Char[8] = {0b0000000, 0b1100011, 0b1100011, 0b1100011, 0b1101011, 0b1111111, 0b1110111, 0b1100011};
byte point_Char[8] = {0b0000000, 0b0000000, B00000000, 0b0000000, 0b0000000, 0b0000000, 0b0001100, 0b0001100};

#define TIME 500
#define PAUSE 1000

void setup() { }

void loop() {

  drawChar(faccia_1); delay(PAUSE);
  drawChar(faccia_2); delay(PAUSE);
  drawChar(faccia_3); delay(PAUSE);
  drawChar(W_Char); delay(TIME);
  drawChar(spazio_Char); delay(TIME);
  drawChar(W_Char); delay(TIME);
  drawChar(spazio_Char); delay(TIME);
  drawChar(W_Char); delay(TIME);
  drawChar(point_Char); delay(TIME);
  drawChar(A_Char); delay(TIME);
  drawChar(D_Char); delay(TIME);
  drawChar(R_Char); delay(TIME);
  drawChar(I_Char); delay(TIME);
  drawChar(R_Char); delay(TIME);
  drawChar(O_Char); delay(TIME);
  drawChar(B_Char); delay(TIME);
  drawChar(O_Char); delay(TIME);
  drawChar(T_Char); delay(TIME);
  drawChar(point_Char); delay(TIME);
  drawChar(I_Char); delay(TIME);
  drawChar(T_Char); delay(TIME);
  drawChar(spazio_Char);  delay (PAUSE);
}

void drawChar(byte character[8]) {
  for (int y = 7; y >= 0; y--) {
    for (int x = 0; x <= 7; x++) {
      if (character[(7 - y)] & (B10000000 >> x)) {
        mled.dot(x, y); // draw dot
      } else {
        mled.dot(x, y, 0); //clear dot
      }
    }
    mled.display();
  }
}

 

Elenco revisioni:

28/02/2022

Aggiornato pagina

27/03/2019

Emissione preliminare
Private Policy Cookie Policy