====== Четырёхразрядный индикатор (Troyka-модуль) ======
[[amp>product/troyka-quad-display?utm_source=man&utm_campaign=quad-v2&utm_medium=wiki|Четырёхразрядный индикатор]] — это четыре [[конспект-arduino:светодиодные-сборки|семисегментных индикатора]] и управляющая логика, смонтированные на одной плате.
{{ :продукты:troyka:troyka-quad-v2.0.jpg |}}
Четырёхразрядный индикатор пригодится, если вам, например, нужно вывести текущее время или показания с одного из сенсоров. Он прост в использовании: подключается к управляющей плате, такой как Arduino, с помощью двух [[сенсоры:3-провода|трёхпроводных шлейфов]].
===== Пример использования с Arduino =====
Для управления индикатором мы написали [[https://github.com/amperka/QuadDisplay2|библиотеку QuadDisplay]]. Она скрывает в себе все тонкости протокола, через который передаются данные на дисплей и предоставляет простые и понятные функции для вывода значений в различных форматах.
==== Пример работы через Hardware SPI ====
Для подключения модуля к Arduino удобно использовать [[amp>/product/arduino-troyka-shield?utm_source=man&utm_campaign=quad-v2&utm_medium=wiki|Troyka Shield]]. На плате уже предусмотрена отдельная группа пинов для работы по протоколу SPI.
{{ :продукты:troyka:troyka_quad_spi_troyka.png?nolink |}}
Для примера выведем на индикатор несколько значений.
// Подключаем библиотеку для работы с дисплеем
#include
// создаём объект класса QuadDisplay и передаём номер пина CS
QuadDisplay qd(9);
void setup()
{
qd.begin();
}
void loop()
{ // можно выводить целые числа
qd.displayInt(123);
delay(1000);
// и отрицательные тоже
qd.displayInt(-123);
delay(1000);
// можно показывать ведущие нули (0012)
qd.displayInt(12, true);
delay(1000);
// можно показывать вещественные числа
// с заданной точностью, например 2 знака после запятой
qd.displayFloat(-1.23, 2);
delay(1000);
// можно показывать температуру в °C
qd.displayTemperatureC(-5);
delay(1000);
// можно показывать нехитрый текст (on/off, например) или
// произвольную графику
qd.displayDigits(QD_O, QD_f, QD_f, QD_NONE); // off
delay(1000);
qd.displayDigits(QD_O, QD_n, QD_NONE, QD_NONE); // on
delay(1000);
// и, конечно, всё очищать
qd.displayClear();
delay(1000);
}
Обратите внимание, что на плате [[amp>product/arduino-uno?utm_source=man&utm_campaign=quad-display-v2&utm_medium=wiki | Arduino Uno]] линии [[https://www.arduino.cc/en/reference/SPI|SPI]] выведены на 6-контактный разъём, а также продублированы на цифровых пинах 10(SS), 11(MOSI), 12(MISO) и 13(SCK). Следовательно если вы подключаете дисплей через Hardware SPI, занятыми окажутся пины 11(MOSI), 12(MISO) и 13(SCK).
==== Пример работы через Software SPI ====
Вы так же можете подключить дисплей к обычным пинам Troyka Shield. Пример подключения приведён на рисунке ниже.
{{ :продукты:troyka:troyka_quad_spi.png?nolink |}}
Для примера выведем на индикатор несколько значений.
// Подключаем библиотеку для работы с дисплеем
#include
// создаём объект класса QuadDisplay и передаём номера пинов CS, DI и ⎍
QuadDisplay qd(9, 5, 7);
void setup()
{
qd.begin();
}
void loop()
{ // можно выводить целые числа
qd.displayInt(123);
delay(1000);
// и отрицательные тоже
qd.displayInt(-123);
delay(1000);
// можно показывать ведущие нули (0012)
qd.displayInt(12, true);
delay(1000);
// можно показывать вещественные числа
// с заданной точностью, например 2 знака после запятой
qd.displayFloat(-1.23, 2);
delay(1000);
// можно показывать температуру в °C
qd.displayTemperatureC(-5);
delay(1000);
// можно показывать нехитрый текст (on/off, например) или
// произвольную графику
qd.displayDigits(QD_O, QD_f, QD_f, QD_NONE); // off
delay(1000);
qd.displayDigits(QD_O, QD_n, QD_NONE, QD_NONE); // on
delay(1000);
// и, конечно, всё очищать
qd.displayClear();
delay(1000);
}
===== Элементы платы =====
{{ :продукты:troyka:schema.png?nolink |}}
На верхней стороне платы смонтированы четыре семисегментных светодиодных индикатора, а на нижней стороне — управляющая этими индикаторами логика.
==== Troyka контакты ====
Модуль подключается к управляющей электронике по SPI-интерфейсу при помощи двух [[сенсоры:3-провода|трёхпроводных шлейфов]].
| DI | | ⎍ |
| CS | V | G |
Назначение контактов 3-проводных шлейфов:
**SPI**
* Вход приёма данных (''DI'') — соедините с пином микроконтроллера, выполняющим функцию вывода данных (''MOSI'').
* не используется
* Вход строба (''⎍'') — соедините с пином микроконтроллера, выполняющим функцию строба (''SCK'').
* Выбор чипа, или защёлка (''CS'') — модуль отображает принятые данные при изменении уровня сигнала на этом контакте с низкого на высокий. Соедините с любым цифровым пином микроконтроллера.
* Питание (''V'') — соедините с питанием микроконтроллера;
* Земля (''G'') — соедините с землёй микроконтроллера;
==== Семисегментные индикаторы ====
[[конспект-arduino:светодиодные-сборки?utm_source=man&utm_campaign=quad-v2&utm_medium=wiki|Семисегментный индикатор]] — это восемь светодиодов, составляющие символ: 7 сегментов + точка. Четырёхразрядный индикатор состоит из четырёх таких символов.
==== Управляющая логика ====
Управление всеми сегментами по отдельности потребовало бы 8×4=32 выходов микроконтроллера. Больше, чем предоставляют многие из них.
Для экономии выводов семисегментные индикаторы подключены через цепочку сдвиговых регистров. По одному регистру 74HC595 на каждый из четырёх индикаторов.
Сдвиговые регистры управляются через SPI-интерфейс, а следовательно для связи с микроконтроллером требуются линии MOSI, SCK, СS, Vcc и GND. Всего 5 линий.
===== Принципиальная и монтажная схемы ====
{{:продукты:troyka:quad-display-v2:qd_schematic.png?direct&400 |}}
{{:продукты:troyka:quad-display-v2:qd_layout_bottom.png?direct&200 |}}
{{:продукты:troyka:quad-display-v2:qd_layout_top.png?direct&200 |}}
===== Характеристики =====
|Напряжение питания|от 3 В до 5 В|
|Максимальный потребляемый ток|150 мА (при питании 5 В)|
===== Ресурсы =====
* [[amp>product/troyka-quad-display?utm_source=man&utm_campaign=quad-v2&utm_medium=wiki|Четырёхразрядный индикатор]] в магазине.
* Библиотека [[https://github.com/amperka/QuadDisplay2|QuadDisplay]].