цифровая электроника
вычислительная техника
встраиваемые системы

 

Arduino и светодиодная матрица 8x8

Автор: Mike(admin) от 12-08-2014, 08:21

Сегодня светодиодные матрицы 8x8 широко распространены, и, к счастью, их можно довольно просто использовать вместе с платами Arduino. Такие матрицы главным образом применяют в качестве недорогих дисплеев для индикации информации.


Arduino и светодиодная матрица

Светодиодную матрицу можно подключить двумя способами: последовательно или параллельно. В данном случае подключим наш модуль последовательно с тем, чтобы сохранить количество выводов (нам понадобятся только три линии данных). Последовательно подключенная матрица всего лишь динамично включает и выключает светодиоды (строка за строкой или столбец за столбцом). Время реакции человеческого глаза составляет примерно 0.1 с, поэтому, если обновлять изображение каждые 0.1 с, то мы его увидим в полной красе.


Наш проект будет состоять из платы Arduino Uno и модуля с матрицей 8x8 и микросхемой MAX7219, которая будет работать с этой матрицей для отображения рисунка сердца. MAX7219 – это драйвер для светодиодных матриц и индикаторов с общим катодом.


Соединим Arduino и модуль следующим образом:


- Arduino pin8 с выводом DIN модуля


- Arduino pin9 с выводом CS модуля


- Arduino pin10 с выводом CLK модуля


- Питание 5 В с выводом VCC модуля


- Земля питания с выводом GND модуля (земля модуля и земля Arduino должны быть соединены).


Принцип подключения показан на рисунке ниже:


Arduino и светодиодная матрица

Далее приведем простой скетч, в котором закодировано изображение сердца:



unsigned char i;
unsigned char j;
 
int Max7219_pinCLK = 10;
int Max7219_pinCS = 9;
int Max7219_pinDIN = 8;
 
unsigned char disp1[19][8]={
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Heart Pattern
0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00,
0x00, 0x80, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00,
0x40, 0x80, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00,
0x60, 0x80, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00,
0x60, 0x90, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00,
0x60, 0x90, 0x88, 0x40, 0x40, 0x00, 0x00, 0x00,
0x60, 0x90, 0x88, 0x44, 0x40, 0x00, 0x00, 0x00,
0x60, 0x90, 0x88, 0x44, 0x44, 0x00, 0x00, 0x00,
0x60, 0x90, 0x88, 0x44, 0x44, 0x08, 0x00, 0x00,
0x60, 0x90, 0x88, 0x44, 0x44, 0x08, 0x10, 0x00,
0x60, 0x90, 0x88, 0x44, 0x44, 0x08, 0x10, 0x20,
0x60, 0x90, 0x88, 0x44, 0x44, 0x08, 0x10, 0x60,
0x60, 0x90, 0x88, 0x44, 0x44, 0x08, 0x90, 0x60,
0x60, 0x90, 0x88, 0x44, 0x44, 0x88, 0x90, 0x60, // Heart Pattern
 
};
 
void Write_Max7219_byte(unsigned char DATA)
{
unsigned char i;
digitalWrite(Max7219_pinCS,LOW);
for(i=8;i>=1;i--)
{
digitalWrite(Max7219_pinCLK,LOW);
digitalWrite(Max7219_pinDIN,DATA&0x80);
DATA = DATA<<1;
digitalWrite(Max7219_pinCLK,HIGH);
}
}
 
void Write_Max7219(unsigned char address,unsigned char dat)
{
digitalWrite(Max7219_pinCS,LOW);
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
digitalWrite(Max7219_pinCS,HIGH);
}
 
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0x00);
Write_Max7219(0x0a, 0x03);
Write_Max7219(0x0b, 0x07);
Write_Max7219(0x0c, 0x01);
Write_Max7219(0x0f, 0x00);
}
 
void setup()
{
 
pinMode(Max7219_pinCLK,OUTPUT);
pinMode(Max7219_pinCS,OUTPUT);
pinMode(Max7219_pinDIN,OUTPUT);
delay(50);
Init_MAX7219();
}
 
void loop()
{
for(j=0;j<19;j++)
{
for(i=1;i<9;i++)
Write_Max7219(i,disp1[j][i-1]);
delay(500);
}
}



Перевод © digitrode.ru


<Источник>


Теги: Arduino, светодиоды, светодиодная матрица



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий