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
Revision | Descriptions | Release |
---|---|---|
0.9 | Prototype | 11th-April-2013 |
0.9b | Public version | 27th-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.)
Real-time clock (RTC) - RTClib - RTClib
IR-receiver - IRremote IRremote (With this library, you can control the display using an IR remoter)
nRF24L01 + - iBoardRF24 - iBoardRF24 (DevDuino Sensor Node 2.4G nRF24L01+ remote control library)
Additionally required libraries that are used during operation of libraries:
Wire
SPI
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.
- _Description_:cleaning the display.
- _Description_: sets the display brightness.
- _brightLevel_:brightness level (byte), a value of 255 - set to maximum brightness.
Example of use:
mymatrix.brightness(177);
- _Description_: returns the current display brightness.
Example of use:
Serial.println(mymatrix.getBrightness());
- _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);
- _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).
- _Description_: displays the serial port the current state of the "shadow" of the array (shadow).
- _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).
- _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)
Tech Support & Product Discussion
if you have any technical issue. submit the issue into our forum. Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.