В этом уроке речь пойдет о кодировании(генерации) пользовательских символов для дисплеев на базе драйвера МАХ7219. Нужно это для того, чтобы в дальнейшем создавать небольшие меню и выводить более-менее читабельные сообщения на дисплей.

        И перед тем как это делать очень важно понять - как происходит кодирование(генерация) пользовательских символов. Используя приведённую ниже таблицу можно закодировать любые удобные для отображения символы, конечно же всё будет ограничиваться сегментами знакомест дисплея, поэтому в данном случае особо не разгонишься.

 

 

        Итак, используя данную таблицу, можно в качестве примера закодировать для отображения некоторое количество символов, из которых состоит слово CONTROL. Ну и вывести всё это дело на дисплей разумеется. Обязательно нужно добавлять префикс B в начале каждой двоичной записи байта закодированного символа. Итак, начнём...

  • Символ С - b01001110  
  • Символ o - b00011101
  • Символ n - b00010101
  • Символ t - b00001111
  • Символ r - b00000101
  • Символ o - b00011101
  • Символ L - b00001110
     

        Далее, используем эти закодированные символы в скетче, чтобы вывести слово на дисплей целиком. Чтобы выводить пользовательские (сгенерированные или закодированные) символы, нужно будет использовать функцию setRow() которая уже есть в подключенной библиотеке LedControl. Синтаксис вызова функции:

 

Display.setRow(address, rank, symbol);

где:

Display - объект класса LedControl
address - адрес устройства на шине SPI(в нашем случае равен 0), тип данных int
rank    - выбранное знакоместо, тип данных int
symbol  - закодированный символ, тип данных byte

 

        Используем эту функцию в скетче, и посмотрим на результат. Итак, скетч, как уже говорилось можно скопировать прямо из окна браузера прямо в редактор Arduino IDE. Ниже приводится полный листинг скетча,  используя который вы можете просто и быстро протестировать дисплей на отображение массива сгенерированных символов.

 

/*Подключаем библиотеку LedControl.h*/
#include "LedControl.h"

/*Константы для пинов подключения*/
#define DATA_IN 13
#define CLK 12
#define LOAD_CS 11
#define NUM_DEV 1
#define DISP_ADDR 0

/*
  Подключение дисплея MAX7219 производим в
  соответсвии с нижеследующей таблицей
  Arduino [Pin 13] -> Max7219 [DataIn]
  Arduino [Pin 12] -> Max7219 [CLK]
  Arduino [Pin 11] -> Max7219 [LOAD]

  Далее, ниже создаём объект Display класса LedControl
  с указанием пинов подключения, константа NUM_DEV говорит
  о том сколько устройств будет подключено каскадом по шине SPI
  в данном случае - всего одно, это дисплей MAX7219
*/
LedControl Display = LedControl(DATA_IN, CLK, LOAD_CS, NUM_DEV);

void setup()
{
/*Выводим дисплей из спящего режима*/
Display.shutdown(DISP_ADDR, false);
/*Устанавливаем яркость свечения сегментов*/
/*Доступные значения от 0 до 15*/
Display.setIntensity(DISP_ADDR,8);
/*Очищаем дисплей*/
Display.clearDisplay(DISP_ADDR);
}

void loop()
{
  /*Закодированное слово Control состоит из массива символов*/
  byte Control[8] = {
                      B00000000, //Пустой символ
                      B01001110, //C
                      B00011101, //o
                      B00010101, //n
                      B00001111, //t
                      B00000101, //r
                      B00011101, //o
                      B00001110  //l
  };
  /*
    Выводим сивмвол на дисплей в указанном знакоместе, где -
    DISP_ADDR - Адрес устройства на шине SPI, в нашем случае равен 0
    Rank - Порядковый номер знакоместа
    Control[index] - Выводимый на дисплей символ из массива байт Control
  */

  for(int Rank = 0, index = 7; Rank < 8, index >= 0; Rank ++, index --)
  {
    Display.setRow(DISP_ADDR, Rank, Control[index]);
  }
}

 

        Результат работы скетча, выводящего массив закодированных символов(слово Control), можно видеть на фото.

 

 

 

        Итак, мы изучили этот интересный дисплей, и нашим следующим шагом будет визуализация на нем значений температуры, даты и времени.  Всё это конечно же будет подкреплено рабочими образцами скетчей, исходя из которых любой из вас, сможет создать что то своё. Ну а мы будем продолжать - Шаг 5. Выводим на дисплей температуру.