Pular para o conteúdo principal

Shield MaTrix V0.9

Shield MaTrix é um Shield empilhável para Arduino, que torna possível aprender programação usando os sensores mais simples a bordo.

Rastreador de Versão

RevisãoDescriçõesLançamento
0.9Protótipo11-abril-2013
0.9bVersão pública27-outubro-2013

Recurso

  • Compatível com Arduino Mega (recomendado Freaduino Mega V1.4 (ATMega 2560 ) )

  • Suporte para Arduino Shield

  • Suporte para dispositivos sem fio baseados em nRF24L01+, xBee

  • Suporte à Matriz de LED 60mm 8X8 (vermelho brilhante, verde brilhante, amarelo)

  • Controle IR (controle remoto)

  • LED RGB (para indicar vários parâmetros)

  • Botão de relógio (ligar / desligar várias configurações)

  • Buzzer (alarme ou ao pressionar os botões do controle remoto)

  • Sensor de luz (iluminação automática das matrizes)

  • RTC (relógio de tempo real)

  • Interface I2C (I / O opcional)

  • Tensão 9-24 V ou controlador USB (recomendado 12V 2A)

Ideias de Aplicação

  • Relógio digital (sincronização NTP) com alarme
  • Estação meteorológica (temperatura-casa-rua-porão, pressão, umidade)
  • Letreiro (leitura de e-mail, redes sociais, etc.)
  • Transferência de dados (para um dispositivo semelhante)

O princípio de exibição de dados

Para exibir diferentes informações na matriz de LED, é utilizada exibição dinâmica. Ao mesmo tempo, a informação é exibida apenas em uma linha (os LEDs correspondentes acendem (vermelho e (ou) verde)), todas as outras linhas - são apagadas. O próximo passo - a linha anterior é apagada e a próxima linha acende (para ela os LEDs atuais). A comutação das linhas é muito rápida e os olhos percebem essa comutação como uma única imagem.

Para minimizar o número de pinos envolvidos, são usados dois tipos diferentes de chips: os registradores de deslocamento (usados para controlar as colunas) e um demultiplexador (controlar as linhas).

Os registradores de deslocamento são ligados em cadeia e conectados via SPI (os pinos envolvidos são descritos abaixo).

O demultiplexador possui três entradas de endereço (DA0, DA1, DA2) - uma combinação de "0" e "1" nas entradas aponta claramente para uma das 8 saídas, que estará em nível ativo. Adicionalmente, o demultiplexador possui entradas de controle (E1, E2, E3) - com as duas primeiras (E1 e E2, elas estão conectadas em nosso esquema) é organizada uma extinção completa da matriz, e com a entrada E3 - é organizada a regulação de brilho (usando PWM).

Interfaces

  • Interface para 4 matrizes de LED bicolores

    • Conjunto de registradores de deslocamento (74HC595 - 8 pcs.) para controlar as colunas dos LEDs

    • Demultiplexador 74HC138 para controlar as linhas dos LEDs e seu brilho (via PWM)

  • Relógio embutido (RTC) - baseado no DS1307 com bateria de backup (CR1220 ou CR1226)

  • Interface para módulo RF nRF24L01 +

  • Botão de relógio (por exemplo, para desligar o som do alarme)

  • Receptor IR em 38kHz (para controle remoto)

  • Fiação para conectar LED-RGB com cátodo comum ou ânodo (selecionado por jumper)

  • Sensor de luz (por exemplo, para ajustar automaticamente o brilho)

  • Transdutor piezo "beeper"

  • Interface I2C

  • Interface xBee

  • Interface para Arduino- Shield

  • Pinos na placa, envolvidos no Arduino Mega

    • D5 - receptor IR

    • D24 - botão de relógio

  • xBee

    • D16 - DIN

    • D17 - DOUT

  • I2C (DS1307)

    • D20 - SDA

    • D21 - SCL

  • LED-RGB (verificar)

    • D34 - vermelho

    • D35 - verde

    • D36 - azul

  • nRF24L01 +

    • D19 - RF_IRQ

    • D37 - RF_SCK

    • D38 - RF_MISO

    • D39 - RF_MOSI

    • D40 - RF_NSS

    • D41 - RF_CE

    • D45 - beeper

    • A7 - sensor de luz

  • Registradores de Deslocamento

    • D42 - SS

    • D51 - MOSI

    • D52 - SCK

  • Demultiplexação

    • D49 - DA0

    • D48 - DA1

    • D47 - DA2

    • D44 - E3 (brilho)

    • D43 - E1, E2 (extinção)

Bibliotecas necessárias

Para usar os vários componentes do Shield MaTrix são necessárias as seguintes bibliotecas:

Exibe informações na matriz - MaTrix - MaTrix (incluindo um teste de exibição simples e dois sketches de exibição em tempo real.)

Bibliotecas adicionais necessárias que são usadas durante a operação das bibliotecas:

Recursos ao usar bibliotecas

Apenas duas bibliotecas requerem pequenos comentários sobre seu uso:

Receptor IR

Como o receptor IR está conectado ao pino digital 5, é necessário alterar o arquivo / IRremote / IRremoteInt.h com o código correto da seguinte forma:


// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
//#define IR_USE_TIMER1 // tx = pin 11
//#define IR_USE_TIMER2 // tx = pin 9
#define IR_USE_TIMER3 // tx = pin 5
//#define IR_USE_TIMER4 // tx = pin 6
//#define IR_USE_TIMER5 // tx = pin 46

nRF24L01+

Inicialize o módulo da seguinte forma:



//iBoardRF24 radio(CE,CSN,MOSI,MISO,SCK,IRQ);
iBoardRF24 radio(41,40,39,38,37,19);



Funções da biblioteca MaTrix

Para usar a biblioteca MaTrix no seu sketch é necessário declarar na função void setup () a seguinte linha de código:

#include <MaTrix.h> //connection library MaTrix

MaTrix mymatrix; //object creation mymatrix

Variáveis

byte array[8][8] - array principal. Os dados deste array determinam o que é exibido atualmente na matriz de LED

 byte array[8][8] = { // An array of 64 bytes
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 7
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 6
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 5
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 4
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 3
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 2
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 1
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000} // строка 0
// red3 green3 red2 green2 red1 green1 red0 green0
};

Cada bit corresponde ao LED correspondente na matriz. 0 - LED "apagado", 1 - LED "aceso"

byte shadow[8][8] - array adicional ("sombra"). Funções da biblioteca usadas para organizar vários efeitos e rolagem de texto (os dados do array de sombra para um determinado efeito são reescritos de acordo com a regra do array de "sombra" para o principal).

 byte shadow[8][8] = { //An array of 64 bytes
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 7
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 6
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 5
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 4
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 3
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 2
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000}, // строка 1
{B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000} // строка 0
// red3 green3 red2 green2 red1 green1 red0 green0
};

Definições

 // Color
#define RED 0
#define GREEN 1
#define YELLOW 2
 // delay iteration in "drawing" effects (ms)
#define VSLOW 500
#define SLOW 150
#define MID 100
#define FAST 50
#define VFAST 25
 // effects
#define FADE 4
#define LEFT 3
#define UP 1
#define DOWN 2
#define NONE 0
 // hardware data
#define BRIGHT 44 // brightness (pin 44 - PWM)
#define LightSENS A7 // light sensor

Função principal

mymatrix.init();
Description: inicialização do módulo.
mymatrix.clearLed();
Description: limpeza do display.
mymatrix.brightness(byte brightLevel);
Description: define o brilho do display.
brightLevel:nível de brilho (byte), um valor de 255 - define o brilho máximo.

Exemplo de uso:

 mymatrix.brightness(177);
mymatrix.get Brightness();
Description: retorna o brilho atual do display.

Exemplo de uso:

 Serial.println(mymatrix.getBrightness());
printString(String s, byte pos, byte color, unsigned char *Font, char effect, int speed);
Descrição: exibe a string especificada.
pos: posição inicial do primeiro caractere (byte). Contando a partir da borda direita da matriz, começando em 0.
color: cor (byte). Três valores predefinidos - RED, GREEN, YELLOW
*Font: um ponteiro para a fonte (unsigned char). Fontes disponíveis na biblioteca: caracteres - font5x8 (Latim), font6x8 (Latim e Cirílico); dígitos - digit6x8bold, digit6x8future. Para detalhes sobre fontes, veja o arquivo fonts.c do arquivo compactado da biblioteca MaTrix.
effect: o efeito da inscrição (char). Valores predefinidos disponíveis: LEFT, UP, DOWN (deslocamento na direção correspondente), FADE (aparecimento), NONE (Sem efeito - instantâneo). Valor padrão - NONE.
speed: velocidade de reprodução do efeito (int). Valores predefinidos disponíveis: VSLOW, SLOW, MID, FAST, VFAST (de "muito lento" a "muito rápido"), valor padrão - MID.

Exemplo de uso:

 mymatrix.printString("123", 3, GREEN, font6x8, UP, SLOW);
printRunningString(String s, byte color, unsigned char *Font, int speed);
Descrição: exibe a linha "correndo" definida.
color: cor (byte). Três valores predefinidos - RED, GREEN, YELLOW
*Font: um ponteiro para a fonte (unsigned char). Fontes disponíveis na biblioteca: caracteres - font5x8 (Latim), font6x8 (Latim e Cirílico); dígitos - digit6x8bold, digit6x8future. Para detalhes sobre fontes, veja o arquivo fonts.c do arquivo compactado da biblioteca MaTrix.
speed: velocidade de reprodução do efeito (int). Valores predefinidos disponíveis: VSLOW, SLOW, MID, FAST, VFAST (de "muito lento" a "muito rápido"), valor padrão - MID.

Exemplo de uso:

 mymatrix.printRunningString("MaTrix test!", RED, font6x8, FAST);

Funções auxiliares

printArray();
Descrição: exibe na porta serial o estado atual do array principal (array).
printShadow();
Descrição: exibe na porta serial o estado atual da "sombra" do array (shadow).
printChar(unsigned char sym, byte pos, byte color);
Descrição: a função altera o bloco de dados (array) de forma que, quando exibido na matriz, na posição predeterminada, seja mostrado o símbolo desejado na cor desejada.
pos: posição inicial do caractere (byte). Contando a partir da borda direita da matriz, começando em 0.
color: cor (byte). Três valores predefinidos - RED, GREEN, YELLOW

Atenção! A fonte usada ao chamar a função deve ser definida usando setFont.

printCharShadow(unsigned char sym, byte pos, byte color);
Descrição: função semelhante a printChar, mas a modificação é aplicada ao array "shadow" (sombra).
printStr(unsigned char *s, byte pos, byte color);
Descrição: a função altera o bloco de dados (array) de forma que, quando exibido em uma matriz, na posição predeterminada, o array de caracteres seja exibido na cor desejada.
*s: um ponteiro para um array de caracteres (unsigned char).
pos: posição inicial do primeiro caractere (byte). Contando a partir da borda direita da matriz, começando em 0.
color: cor (byte). Três valores predefinidos - RED, GREEN, YELLOW

Atenção! A fonte usada ao chamar a função deve ser definida usando setFont.

printStrShadow(unsigned char *s, byte pos, byte color);
Descrição: função semelhante a printChar, mas a modificação é aplicada ao array "shadow" (sombra).

Referências

[ ZIP ] Versão atual da biblioteca MaTrix.

Esquemático

No lado direito da placa (quando vista a partir da matriz) estão:

  • Botão de relógio

  • Interface para nRF24l01 +

  • Local para montagem do LED RGB

  • Jumper de seleção do tipo de LEDs (ânodo comum ou cátodo comum)

  • Receptor IR

  • Interface I2C

No lado esquerdo da placa estão:

  • Sensor de luz

  • Buzzer piezo (beeper)

Esquemático do dispositivo

Suporte Técnico & Discussão sobre o Produto

se você tiver qualquer problema técnico, envie o problema em nosso fórum. Obrigado por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes formas de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...