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

 

Arduino и светодиодный матричный дисплей своими руками

Автор: Mike(admin) от 11-01-2018, 17:05

Для отображения информации в радиолюбительских и инженерных проектах сегодня зачастую используют дисплеи. К Arduino можно подключать различные дисплеи, например, TFT и LCD, но для некоторых они могут быть довольно дорогими, если они проектируют низкобюджетное устройство.


Arduino и светодиодный матричный дисплей своими руками

В таких случаях можно сделать простой и дешевый матричный дисплей на основе светодиодов, который может управляться посредством Arduino.


В данном примере мы рассмотрим пример построения светодиодного матричного дисплея размером 7 x 5 точек. Количество точек может быть расширено по желанию. Если вы используете Arduino Uno, количество строк может быть увеличено до 14, а число столбцов может быть увеличено до 6. Прежде чем перейти к описанию схемы, стоит рассказать о методе мультиплексирования, используемого в матричном дисплее. Пусть, предположим, мы имеем светодиодный матричный дисплей 5 × 5, и вы хотите, чтобы засветился один светодиод, например, 7-й светодиод. Тогда включается вся строка, состоящая из светодиода номер 7 (строка 3), в результате один вывод всех светодиодов этой строки получает напряжение. Теперь, чтобы зажегся светодиод 7, активируется соответствующий столбец (4-й столбец). В результате загорается только седьмой светодиод.


Схема подключения матричного дисплея 7 × 5 к плате Arduino Uno показана на приведенном ниже рисунке. Помимо Arduino и самих светодиодов, организованных в матрицу, в схеме присутствуют NPN-транзисторы BC547 с токоограничивающими резисторами, подключенными к базе. Всего таких транзисторов семь – по одному на каждый столбец.


Arduino и светодиодный матричный дисплей своими руками

Плата Arduino Uno не может использовать эти все светодиоды напрямую. Чтобы включать и выключать все светодиоды, используется схему коммутации на основе 7 транзисторов. Выход берется с цифровых линий D2-D8 и передается на базу транзисторов T1-T7. Коллектор транзистора подключен к питанию + 5 В с платы Arduino. Анод каждого столбца закорочен и подключен к эмиттеру транзистора, как показано на схеме. Катоды каждого ряда закорочены и подключены к аналоговым линиям для организации на них нулевого потенциала. Чтобы загорелся определенный светодиод, соответствующий цифровой контакт в столбеце устанавливается в высокий логический уровень, а соответствующий аналоговый вывод в строке устанавливается в низкий логический уровень. Когда цифровой контакт становится «высоким», соответствующий транзистор включается, в результате напряжение коллектора (+5 В) становится доступно на аноде светодиодов, а аналоговый вывод ведет себя как земля, в результате образуется путь для тока и светодиод начинает светиться.


Ниже приведен код (скетч) для Arduino, позволяющий выводить на светодиодном матричном дисплее буквы B, E и P. Соответствующие функции можно поменять для вывода своих символов.


int RowLed[7] = {2,3,4,5,6,7,8};        // Точки подключения катодов
int colLed[5] = {15,16,17,18,19};       // Точки подключения анодов

int Rpin = 6;                           // Всего линий для катодов
int cpin = 4;                           // Всего линий для анодов

void setup()                
{
  for (int i = 0; i <= Rpin; i++) 
  {
    pinMode(RowLed[i], OUTPUT);
  }
  
  for (int j = 0; j <= cpin; j++) 
  {
    pinMode(colLed[j], OUTPUT);
  }
}

void alloff() 
{
  
  for (int i = 0; i <= Rpin; i++) 
  {
    digitalWrite(RowLed[i],LOW);
  }
  
  for (int j = 0; j <= cpin; j++) 
  {
   digitalWrite(colLed[j],HIGH);
  }

}  

void ledon(int x, int y) 
{
  alloff();                             // сначала вызывается функция выключения, чтобы убедиться, что включен только этот светодиод.
  digitalWrite(RowLed[x], HIGH);        // Анодный вывод конкретного светодиода в +5 В
  digitalWrite(colLed[y], LOW);         // Катодный вывод конкретного светодиода в 0 В


}

/*   Функция для отображения буквы B*/

void L_B()
{
  
  ledon(0,0);delay(1);
  ledon(1,0);delay(1);
  ledon(2,0);delay(1);
  ledon(3,0);delay(1);
  ledon(4,0);delay(1);
  ledon(5,0);delay(1);
  ledon(6,0);delay(1);
  ledon(0,1);delay(1);
  ledon(0,2);delay(1);
  ledon(0,3);delay(1);
  ledon(1,4);delay(1);
  ledon(2,4);delay(1);
  ledon(3,0);delay(1);
  ledon(3,1);delay(1);
  ledon(3,2);delay(1);
  ledon(3,3);delay(1);
  ledon(4,4);delay(1);
  ledon(5,4);delay(1);
  ledon(6,0);delay(1);  
  ledon(6,1);delay(1);
  ledon(6,2);delay(1);
  ledon(6,3);delay(1);
}

/*   Функция для отображения буквы E*/

void L_E()
{
  
  ledon(0,0);delay(1);
  ledon(1,0);delay(1);
  ledon(2,0);delay(1);
  ledon(3,0);delay(1);
  ledon(4,0);delay(1);
  ledon(5,0);delay(1);
  ledon(6,0);delay(1);
  ledon(0,1);delay(1);
  ledon(0,2);delay(1);
  ledon(0,3);delay(1);
  ledon(0,4);delay(1);
  ledon(3,0);delay(1);
  ledon(3,1);delay(1);
  ledon(3,2);delay(1);
  ledon(3,3);delay(1);
  ledon(3,4);delay(1);
  ledon(6,0);delay(1);  
  ledon(6,1);delay(1);
  ledon(6,2);delay(1);
  ledon(6,3);delay(1);
  ledon(6,4);delay(1);

}

/*   Функция для отображения буквы P */

void L_P()
{
  ledon(0,0);delay(1);
  ledon(1,0);delay(1);
  ledon(2,0);delay(1);
  ledon(3,0);delay(1);
  ledon(4,0);delay(1);
  ledon(5,0);delay(1);
  ledon(6,0);delay(1);
  ledon(0,1);delay(1);
  ledon(0,2);delay(1);
  ledon(0,3);delay(1);
  ledon(1,4);delay(1);
  ledon(2,4);delay(1);
  ledon(3,0);delay(1);
  ledon(3,1);delay(1);
  ledon(3,2);delay(1);
  ledon(3,3);delay(1);
}

void BEP()
{
  for(int i=0;i<=50;i++)
  {
    L_B();
  }
  alloff();
  delay(200);
  for(int i=0;i<=50;i++)
  {
    L_E();
  }
  alloff();
  delay(200);
  for(int i=0;i<=50;i++)
  {
   L_P();
  }
  alloff();
  delay(200);
}

void loop() 
{
  BEP();
}



© digitrode.ru


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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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