Skip to main content

Shield MaTrix V0.9

Shield MaTrix is a stackable Shield for Arduino, which makes it possible to learn programming using the most simple sensors on board.

Version Tracker

RevisionDescriptionsRelease
0.9Prototype11th-April-2013
0.9bPublic version27th-October-2013

Feature

  • Arduino Mega compatible (recommended Freaduino Mega V1.4 (ATMega 2560 ) )

  • Support for Arduino Shield

  • Support for wireless devices based on the nRF24L01+, xBee

  • Support Matrix LED 60mm 8X8 ( bright red , bright green , yellow)

  • IR control ( remote control )

  • RGB LED ( to indicate the various parameters)

  • Clock button ( on / off various settings )

  • Buzzer ( Alarm or pressing the remote control buttons )

  • Light sensor (automatic illumination matrices )

  • RTC ( real time clock )

  • I2C- interface (optional I / O)

  • Voltage 9-24 V or USB controller (recommended 12V 2A)

Application Ideas

  • Digital clock (synchronization NTP) with alarm
  • Weather station (temperature-house street-cellar, pressure, humidity)
  • Marquee (reading e-mail, social networks, etc.)
  • Data transfer (on a similar device)

The principle of data display

To display different information on the LED matrix display uses dynamic . At the same time information is displayed only one line ( corresponding LED lights (red and (or ) green ) ) , all other lines - repaid. The next step - the previous line is extinguished and ignited the next line ( for her current LEDs). Switching rows is very fast and eyes perceive this switch as a single image .

To minimize the number of pins involved are two different types of chips: the shift registers (used for control columns) and a demultiplexer ( control lines).

Shift registers included chain and connected via SPI ( pins involved are described below).

Demultiplexer has three address inputs (DA0, DA1, DA2) - a combination of "0" and "1" at the entrances clearly points to one of the 8 outputs, which will be active level . Additionally the demultiplexer has control inputs (E1, E2, E3) - with the first two (E1 and E2, they are connected in our scheme ) organized a complete quenching of the matrix , and with the input E3 - organized brightness adjustment (using PWM) .

Interfaces

  • Interface for 4 bicolor LED matrix

    • Set shift registers (74HC595 - 8 pcs.) To control the columns of LEDs

    • Demultiplexer 74HC138 to control the rows of LEDs and their brightness (via PWM)

  • Built-in clock (RTC) - based on the DS1307 with battery backup battery (CR1220 or CR1226)

  • Interface for RF- module nRF24L01 +

  • Clock button (for example, to turn off the alarm sound )

  • IR receiver at 38kHz ( for remote control )

  • Wiring for connecting RGB- LED with common cathode or anode (selected by jumper )

  • Light sensor ( for example, to automatically adjust the brightness)

  • Piezo transducer " beeper "

  • I2C- interface

  • xBee- interface

  • Interface for Arduino- Shield

  • Pins on the board, involved on Arduino Mega

    • D5 - IR receiver

    • D24 - clock button

  • xBee

    • D16 - DIN

    • D17 - DOUT

  • I2C (DS1307)

    • D20 - SDA

    • D21 - SCL

  • RGB-LED (check)

    • D34 - red

    • D35 - Green

    • D36 - Blue

  • nRF24L01 +

    • D19 - RF_IRQ

    • D37 - RF_SCK

    • D38 - RF_MISO

    • D39 - RF_MOSI

    • D40 - RF_NSS

    • D41 - RF_CE

    • D45 - squeaker

    • A7 - light sensor

  • Shift Registers

    • D42 - SS

    • D51 - MOSI

    • D52 - SCK

  • Demultiplex

    • D49 - DA0

    • D48 - DA1

    • D47 - DA2

    • D44 - E3 (brightness)

    • D43 - E1, E2 (quenching)

Necessary libraries

To use the various components Shield MaTrix requires the following libraries:

Displays information on the matrix - MaTrix - MaTrix (including a simple display test and two real time display sketches.)

Additionally required libraries that are used during operation of libraries:

Features using libraries

Only two libraries require little comment on their use:

IR receiver

Since the IR receiver connected to digital pin of 5 must file / IRremote / IRremoteInt.h correct code as follows:


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

Initialize the module as follows:



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



Library functions MaTrix

To use the library in your sketch MaTrix need to declare a function void setup () to enter the following line of code:

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

MaTrix mymatrix; //object creation mymatrix

Variables

byte array[8][8] - main array. The data from this array is determined that the currently displayed on the LED matrix

 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
};

Each bit corresponds to the corresponding LED in the matrix. 0 - LED "extinguished", 1 - LED "lit"

byte shadow[8][8] - additional ("shadow") array. Library functions used for organizing various effects and scrolling text (data from the shadow of the array for a particular effect rewritten the rule of the "shadow" of the array in the main).

 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
};

Definitions

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

Main function

**mymatrix.init();**
_Description_: nitialization module.
**mymatrix.clearLed();**
_Description_:cleaning the display.
**mymatrix.brightness(byte brightLevel);**
_Description_: sets the display brightness.
_brightLevel_:brightness level (byte), a value of 255 - set to maximum brightness.

Example of use:

 mymatrix.brightness(177);
**mymatrix.get Brightness();**
_Description_: returns the current display brightness.

Example of use:

 Serial.println(mymatrix.getBrightness());
**printString(String s, byte pos, byte color, unsigned char *Font, char effect, int speed);**
_Description_: displays the specified string.
_pos_: starting position of the first character (byte). Counting from the right edge of the matrix, starting with 0.
_color_: color (byte). Three predefined values - RED, GREEN, YELLOW
_*Font_: a pointer to the font (unsigned char). Fonts available at the library: character - font5x8 (Latin), font6x8 (Latin and Cyrillic); digital - digit6x8bold, digit6x8future. Details about fonts, see the file fonts.c of the library archive MaTrix.
_effect_: the effect of the inscription (char). Available predefined values: LEFT, UP, DOWN (shift in the corresponding direction), FADE (manifestation), NONE (No effect - instantly). Default value - NONE.
_speed_: playback speed effect (int). Available predefined values: VSLOW, SLOW, MID, FAST, VFAST (from "very slow" to "very quickly"), default value - MID.

Example of use:

 mymatrix.printString("123", 3, GREEN, font6x8, UP, SLOW);
**printRunningString(String s, byte color, unsigned char *Font, int speed);**
_Description_: displays the defined "running" line.
_color_: color (byte). Three predefined values - RED, GREEN, YELLOW
_*Font_: a pointer to the font (unsigned char). Fonts available at the library: character - font5x8 (Latin), font6x8 (Latin and Cyrillic); digital - digit6x8bold, digit6x8future. Details about fonts, see the file fonts.c of the library archive MaTrix.
_speed_: playback speed effect (int). Available predefined values: VSLOW, SLOW, MID, FAST, VFAST (from "very slow" to "very quickly"), default value - MID.

Example of use:

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

Auxiliary functions

**printArray();**
_Description_: displays the serial port the current state of the main array (array).
**printShadow();**
_Description_: displays the serial port the current state of the "shadow" of the array (shadow).
**printChar(unsigned char sym, byte pos, byte color);**
_Description_: function changes the bulk (array)so that when displayed in the matrix in a predetermined position of the desired output color desired symbol.
_pos_:starting character position (byte). Counting from the right edge of the matrix, starting with 0.
_color_: color (byte). Three predefined values - RED, GREEN, YELLOW

Attention! Font that is used when calling the function must be defined using the setFont.

**printCharShadow(unsigned char sym, byte pos, byte color);**
_Description_: function similar printChar, but is subject to modification "shadow" array (shadow).
**printStr(unsigned char *s, byte pos, byte color);**
_Description_: function changes the bulk (array) so that when displayed on a matrix with a predetermined desired position of the array of characters displayed the color desired.
_*s_: a pointer to an array of characters (unsigned char).
_pos_: starting position of the first character (byte). Counting from the right edge of the matrix, starting with 0.
_color_: color (byte). Three predefined values - RED, GREEN, YELLOW

Attention! Font that is used when calling the function must be defined using the setFont.

**printStrShadow(unsigned char *s, byte pos, byte color);**
_Description_: function similar printChar, but is subject to modification "shadow" array (shadow).

References

[ ZIP ] Current version of the library MaTrix.

Schematic

The right side of the board (when viewed from the matrix) are:

  • Clock button

  • Interface for nRF24l01 +

  • Place mounting RGB-LED

  • Select jumper type LEDs (common anode or common cathode)

  • IR receiver

  • I2C - Interface

On the left side of the board are:

  • Light sensor

  • Piezo buzzer (beeper)

Schematic of the device

Tech Support

if you have any technical issue. submit the issue into our forum.


Loading Comments...