Примеры работы библиотеки

В этой статье мы разберём практические примеры работы со специализированной библиотекой. После прочтения этой статьи вам станет понятен принцип работы с этой библиотекой и вы сможете с лёгкостью выводить любые данные на табло из панелей.

Вывод температуры

Этот пример демонстрирует принцип вывода данных о температуре на табло из 4 панелей.

Здесь выводится значение температуры с одним знаком после запятой, знаком «-» отрицательной температуры и знаком «C», обозначающим градусы Цельсия, причём цифры температуры выводятся синим цветом, а дополнительные знаки — жёлтым.

/*
  Draw Temperature (float) example
  (Show Float value of Temperature on screen.)
  
  Hardware:
  - Panels (4 default)
  - Arduino Uno

  Software:
  - ELABORY Library
  - Adafruit_NeoPixel Libray (include)

  Configuration:
  - Data GPIO: D6 (default)
  - VCC (5V)
  - GND
*/

#include <ElaboryDigitSmart.h>

ElaboryDigitSmart ds = ElaboryDigitSmart();

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start PrintTempFloat example..."));
  randomSeed(analogRead(0));
  
  ds.setAll(ds.white);
  delay(1000);
  ds.clearScreen();
}

void drawTempFloat(int start, float temp, byte s, uint32_t c1, uint32_t c2) {
  // Minus
  if (temp < 0) {ds.minus(0, c2);}
           else {ds.minus(0, 0);}

  // Print digits
  ds.printFloat(start, temp, s, c1);

  // Celsius or Deg
  //ds.deg    (start+1, c2);
  ds.celsius(start+1, c2);
}

void loop() {
  // 2         - start print position on screen
  // -3.5      - test Temperature (float)
  // 1         - digits after point
  // ds.blue   - color of Digits
  // ds.yellow - color of Signs
  drawTempFloat(2, -3.5, 1, ds.blue, ds.yellow);
  delay(1000);
}

На табло из 4 панелей выводится значение температуры «-3,5С». Если ваше табло имеет 5 или более панелей, то вы можете добавить знак градуса «°» или увеличить диапазон выводимых значений температуры.

Разумеется, вы можете по своему усмотрению менять цвета выводимых цифр, букв и знаков, в соответствии с логикой вашей задачи. Вы можете также менять яркость свечения выводимых данных.

Индикация времени

Этот пример демонстрирует принцип вывода данных о времени на табло из панелей. Здесь также демонстрируется принцип создания динамических эффектов на табло из панелей — здесь разделитель «:» мигает раз в секунду. По этому же принципу вы можете зоздавать любые другие анимации на этих табло.

/*
  Draw Time Hours-Minutes example
  (Show Time Hours-Minutes (Seconds) on screen.)
  
  Hardware:
  - Panels (4 default)
  - Arduino Uno

  Software:
  - ELABORY Library
  - Adafruit_NeoPixel Libray (include)

  Configuration:
  - Data GPIO: D6 (default)
  - VCC (5V)
  - GND
*/

#include <ElaboryDigitSmart.h>

ElaboryDigitSmart ds = ElaboryDigitSmart();

// For separator
uint32_t tmr = 0;
bool clr = true;

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start Time Hours-Minutes example..."));
  randomSeed(analogRead(0));
  
  ds.setAll(ds.white);
  delay(1000);
  ds.clearScreen();
}

// Dynamic separator
void actionTimer(uint16_t n, uint32_t c) {
  if (millis() - tmr > 1000) {
    clr = !clr;
    tmr = millis();
  }

  // ds.timer - library's function for print Hours-Minutes separator
  if (clr) {ds.timer(n, c);}
      else {ds.timer(n, 0);}
}

// Hours - Minutes
void drawHM(uint16_t n, byte hours, byte minutes, uint32_t c) {
  // ds.extract - library's function for extract digits from value (by position)
  ds.printDigit(n - 3, ds.extract(hours, 1), c);
  ds.printDigit(n - 2, ds.extract(hours, 0), c);
  
  ds.printDigit(n - 1, ds.extract(minutes, 1), c);
  ds.printDigit(n    , ds.extract(minutes, 0), c); 
}

// Hours - Minutes - Seconds
void drawHMS(uint16_t n, byte hours, byte minutes, byte seconds, uint32_t c) {
  ds.printDigit(n - 5, ds.extract(hours, 1), c);
  ds.printDigit(n - 4, ds.extract(hours, 0), c);
  
  ds.printDigit(n - 3, ds.extract(minutes, 1), c);
  ds.printDigit(n - 2, ds.extract(minutes, 0), c);

  ds.printDigit(n - 1, ds.extract(seconds, 1), c);
  ds.printDigit(n    , ds.extract(seconds, 0), c);
}

void loop() {
  drawHM (3, 12,     millis()/1000, ds.red);   // Pos, Hours, Minutes, Color
//drawHMS(5, 12, 11, millis()/1000, ds.green); // Pos, Hours, Minutes, Seconds, Color (need 6+ panels setup)
  actionTimer(1, ds.yellow);                   // Dynamic separator
  delay(200);
}

Количество выводимых данных о времени зависит от общего количества используемых панелей. Например, если у вас будет 6 панелей, то вы сможете выводить одновременно данные о часах (ЧЧ), минутах (ММ) и секундах (СС).

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

Отображение счётчика

Пример вывода 4-значного числа на табло из панелей. В библиотеке есть функции для вывода 1, 2, 3 и 4-значных чисел. В данном случае используется функция для вывода 4-значных чисел.

/*
  Print 4 Digits example
  (Show timer with 4 digits.)
  
  Hardware:
  - Panels (4 default)
  - Arduino Uno

  Software:
  - ELABORY Library
  - Adafruit_NeoPixel Libray (include)

  Configuration:
  - Data GPIO: D6 (default)
  - VCC (5V)
  - GND
*/

#include <ElaboryDigitSmart.h>

ElaboryDigitSmart ds = ElaboryDigitSmart();

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start Print4Digits example..."));
  randomSeed(analogRead(0));
  
  ds.setAll(ds.white);
  delay(1000);
  ds.clearScreen();
}

void loop() {
  ds.print4(ds.maxPanel(), millis()/100, ds.blue); // ds.maxPanel() - start print position on last (right) panel
  delay(100);
}

В динамике на табло отображается время работы контроллера (в десятых долях секунды). По этому же принципу можно выводить любые другие данные.

Вывод значений с плавающей точкой и добавление символа величины

Этот пример демонстрирует вывод на табло числа с плавающей точкой и добавления к этому числу специального знака, в данном случае знака «C» градусов Цельсия, но это может быть знак любой другой величины.

/*
  Print Float value example
  (Show Float value on screen.)
  
  Hardware:
  - Panels (4 default)
  - Arduino Uno

  Software:
  - ELABORY Library
  - Adafruit_NeoPixel Libray (include)

  Configuration:
  - Data GPIO: D6 (default)
  - VCC (5V)
  - GND
*/

#include <ElaboryDigitSmart.h>

ElaboryDigitSmart ds = ElaboryDigitSmart();

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start PrintFloat example..."));
  randomSeed(analogRead(0));
  
  ds.setAll(ds.white);
  delay(1000);
  ds.clearScreen();
}

void loop() {
  // 2        - start print position on screen
  // 35.1     - test Float value
  // 1        - digits after point
  // ds.green - green color
  ds.printFloat(2, 35.1, 1, ds.green);
  
  // ds.celsius - library's function to print Celsius sign
  // 3          - print position on screen
  // ds.yellow  - library's pre-set yellow color
  
  ds.celsius(3, ds.yellow);
  delay(1000);
}

Количество отображаемых разрядов числа определяется количеством панелей в вашем табло — для отображения цифр с большим количеством разрядов понадобится табло с соответствующим количеством панелей.

Пример вывода знаков

Ну и в завершение приведём пример вывода различных знаков на табло из панелей. Здесь в случайном порядке выводятся различные знаки и символы, которые предопределены в библиотеке.

/*
  Random Signs example
  (Show random signs on all connected panels.)
  
  Hardware:
  - Panels (4 default)
  - Arduino Uno

  Software:
  - ELABORY Library
  - Adafruit_NeoPixel Libray (include)

  Configuration:
  - Data GPIO: D6 (default)
  - VCC (5V)
  - GND
*/

#include <ElaboryDigitSmart.h>

ElaboryDigitSmart ds = ElaboryDigitSmart();

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start RandomSigns example..."));
  randomSeed(analogRead(0));
  
  ds.setAll(ds.white);
  delay(1000);
  ds.clearScreen();
}

void drawRandomSigns(bool noWhite) {
  ds.printSign(ds.randomPanel(), ds.randomSign(), ds.randomColor(noWhite));
}

void loop() {
  drawRandomSigns(true);
  delay(500);
}

Здесь запечатлён момент, когда на табло были выведены символы «n», «U» «o» «S». Цвет выводимых символов также выбирается случайным образом.

Для справки, ниже приведён список всех предопределённых в библиотеке символов и знаков.

#define SIGN_A  0
#define SIGN_C  1
#define SIGN_E  2
#define SIGN_F  3
#define SIGN_H  4
#define SIGN_I  5
#define SIGN_J  6
#define SIGN_L  7
#define SIGN_O  8
#define SIGN_P  9
#define SIGN_S 10
#define SIGN_U 11

#define SIGN_b 12
#define SIGN_c 13
#define SIGN_h 14
#define SIGN_n 15
#define SIGN_o 16
#define SIGN_r 17
#define SIGN_t 18
#define SIGN_u 19

#define SIGN_MINUS 20
#define SIGN_UP    21
#define SIGN_EQUAL 22
#define SIGN_UNDER 23
#define SIGN_DEG   24

А также предопределённые функции для вывода наиболее часто используемых знаков — «минус», «равно», «градус», «Ампер» и т. д.

void zero   (uint16_t n, uint32_t c);  
void minus  (uint16_t n, uint32_t c);
void up     (uint16_t n, uint32_t c);
void under  (uint16_t n, uint32_t c);
void equal  (uint16_t n, uint32_t c);
void deg    (uint16_t n, uint32_t c);
void celsius(uint16_t n, uint32_t c);
void fheit  (uint16_t n, uint32_t c);
void amper  (uint16_t n, uint32_t c);
void voltage(uint16_t n, uint32_t c);
void temp   (uint16_t n, uint32_t c);
void hum    (uint16_t n, uint32_t c);
void pres   (uint16_t n, uint32_t c);

Заключение

Используя библиотеку ELABORY DigitSmart Library, вы можете решить любые свои задачи по выводу информации на табло из панелей. Здесь приведены только несколько примеров, больше информации вы можете найти в папке с примерами самой библиотеки Library.

Купить

Купить модули матриц можно в наших магазинах: