Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Модуль 4 - разрядного индикатора ====== ===== Описание ===== Для упрощения работы с 4-разрядным 7-сегментным индикатором был создан данный модуль. На плате с одной стороны размещается дисплей, с другой стороны находится чип для работы с дисплеем - TM1637. Модуль имеет 4 вывода - что значительно упрощает работу с дисплеем, избавляя от большого количества проводов, дополнительных радиоэлектронных компонентов, делая легче подключение к контроллеру. ==== Технические характеристики ==== * Напряжение питания: 5 В * Потребляемый ток: 60 мА * Рабочая температура: -40 °С - +85 °С <WRAP center round tip 60%> На практике, модуль также работает от напряжения в 3,3 В. Однако, данный режим работы не представлен в документации производителя чипа, поэтому подключение к 3,3 В электронике осуществляется Вами на свой страх и риск! </WRAP> ==== Физические размеры ==== * Модуль (Д х Ш х В): 65 х 25 х 12 мм ==== Плюсы использования ==== * Избавляет от проводов в проекте * Существенно упрощает подключение к контроллеру * Экономит пространство * Регулируемая яркость свечения дисплея (программно) * Нет необходимости подключать дополнительные компоненты (резисторы, регистры) ==== Минусы использования ==== * Модуль дороже обычного индикатора ==== Библиотека для работы с дисплеем ==== * [[https://files.smartelements.ru/know_libs/tm1637.zip|Скачать]] ==== Смотрите также ==== * [[main:sensors:kb874#Вывод_значений_на_дисплей|Использование индикатора в проекте подсчёта количества посетителей]] ===== Примеры подключения и использования ===== ==== Пример 1. Вывод символов и цифр на дисплей ==== В примере демонстрируется подключение дисплея к контроллеру, вывод различных надписей, а также чисел от 0 до 1000. Примеры тестировались на контроллере Smart UNO. **Для этого нам понадобится:** ^ Что нужно: ^ Кол-во, шт ^ | [[httpss://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер ]] | 1 | | [[httpss://smartelements.ru/collection/displei-i-indikatory/product/modul-4-razryadnogo-indikatora-krasnyy| Модуль 4 - разрядного индикатора (красный)]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода мама-мама]] | 4 | **Подключение:** {{ :main:disp:модуль_4-разрядного_индикатора.png?nolink |}} **Пример кода:** <file Arduino> #include "SevenSegmentTM1637.h" //подключение библиотеки для работы с дисплеем const byte PIN_CLK = 4; // подключение контакта CLK const byte PIN_DIO = 5; // подключение контакта DIO SevenSegmentTM1637 display(PIN_CLK, PIN_DIO); //создание объекта дисплея void setup() { display.begin(); // инициализация дисплея display.setBacklight(100); // установка яркости в 100% display.print("INIT"); // отображение надписи INIT (инициализация) на дисплее delay(1000); // задержка в 1 секунду }; void loop() { display.print("LOOP"); // отображение надписи LOOP (цикл) delay(1000); // задержка 1 секунда display.print("COUNTING SOME DIGITS");// написать "COUNTING SOME DIGITS" - подсчёт нескольких цифр display.clear(); // очистка дисплея for (uint8_t i=0; i < 1000; i++) { // цикл от 0 до 1000 display.print(i); // вывод текущего числа на дисплей delay(100); // задержка в 100 мс }; display.clear(); // очистить дисплей display.print("SUCC"); // вывести надпись SUCC (успешно) display.blink(); // помигать надписью SUCC delay(1000); // задержка в 1 секунду display.clear(); // очистить дисплей display.print("SMARTELEMENTS.RU - OFFICIAL STORE"); // вывести надпись display.clear(); // очистить дисплей }; </file> ==== Пример 2. Вывод символов и цифр на дисплей ==== В примере демонстрируется подключение дисплея к контроллеру, вывод различных надписей, а также подключения режима игрового табло и часов. Примеры тестировались на контроллере Smart UNO. **Для этого нам понадобится:** ^ Что нужно: ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер ]] | 1 | | [[https://smartelements.ru/collection/displei-i-indikatory/product/modul-4-razryadnogo-indikatora-krasnyy| Модуль 4 - разрядного индикатора (красный)]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]] | 4 | **Подключение:** {{ :main:disp:модуль_4-разрядного_индикатора.png?nolink |}} **Пример кода:** <file Arduino> #include "SevenSegmentTM1637.h" //подключение библиотеки для работы с дисплеем #include "SevenSegmentExtended.h" // библиотека для подключения доп функций (например отображение времени) const byte PIN_CLK = 4; // подключение контакта CLK const byte PIN_DIO = 5; // подключение контакта DIO SevenSegmentExtended display(PIN_CLK, PIN_DIO); //создание объекта дисплея void setup() { display.begin(); // инициализация дисплея display.setBacklight(100); // установка яркости в 100% display.print("INIT"); // отображение надписи INIT (инициализация) на дисплее delay(1000); // задержка в 1 секунду }; void loop() { display.clear(); //очистка дисплея //вывод очков игры "Семёрочка" из набора Смарт 30 //предположим что у игрока 1 - 1 очко, у игррока 2 после очередной партии - 3 победных очка //и необходимо на дисплей вывести результат игры byte player1Score = 1; //количество очков игрока 1 byte player2Score = 3; //количество очков игрока 3 display.print("THE GAME IS OVER, SCORE IS"); //вывод надписи display.printDualCounter(player1Score, player2Score); // вывот счёта "1:3" на дисплей display.blink(); //помигать дисплеем delay(1500); //задержка в полторы секунды display.clear(); //очистка дисплея display.print("NOW IS CLOCK TIME"); //вывод надписи display.clear(); //очистка дисплея for (byte hours = 0 ; hours < 24; hours++) { // подсчёт часов с 0 до 23 for (byte minutes = 0 ; minutes < 60; minutes++) { // минуты с 0 до 59 display.printTime(hours, minutes, true); // display time delay(10); // задержка перед увеличением минуты (реально - 60 секунд, но для демонстрации - 10 мс) }; }; } </file> ==== Пример 3. Засыпать и просыпаться по будильнику часов ==== В данном примере формируется минипроект - часы с будильником. Часы показывают время на черырёхразрядном индикаторе. У устройства имеется кнопка - которая переводит контроллер в режим сна до следующей минуты, устанавливая на часах будильник на следующую за текущей минуту. Индикацией установки будильника служит появление на индикаторе надписи "ALAR" - от английского alarm (будильник). Для демонстрации того, что устройство находится в режиме сна, на дисплей выводится информация в виде четырёх тире (- - - -). По пробуждению, дисплей снова отображает время. **Библиотеки** Помимо библиотеки для работы с индикатором, понадобятся библиотеки для режимов сна и модуля часов. Их можно загрузить со страниц в Базе Знаний: [[main:info:sleep]] и [[main:modules:pcf8563]] ^ Что нужно ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[httpss://smartelements.ru/collection/shildy/product/sensor-shield|Sensor Shield]] | 1 | | [[httpss://smartelements.ru/collection/moduli/product/modul-chasov-pcf8563|Модуль часов PCF8563]] | 1 | | [[httpss://smartelements.ru/collection/displei-i-indikatory/product/modul-4-razryadnogo-indikatora-krasnyy|Модуль 4-разрядного индикатора ]] | 1 | | [[httpss://smartelements.ru/collection/moduli/product/modul-knopki|Модуль кнопки]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h4-20-sm|Шлейф "мама-мама" х4]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h3-20-sm|Шлейф "мама-мама" х3]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода мама-мама]] | 5 | **Схема подключения** {{ :главная:модули:модуль_часов_pcf8563_пример_3_н.png?nolink |}} **Скетч для загрузки** <file Arduino> #include "SevenSegmentTM1637.h" //подключение библиотеки для работы с дисплеем #include "SevenSegmentExtended.h" //подключение расширенных функций дисплея #include <Wire.h> //библиотека для работы с I2C #include <Rtc_Pcf8563.h> //библиотека для работы с часами #include <Sleep_n0m1.h> //подключение библиотеки для режимов сна const int wakeUpPin = 3; //вывод прерывания const int button = 6; //вывод подключения кнопки Rtc_Pcf8563 rtc; //инициализация часов SevenSegmentExtended display(13, 12); //создание объекта дисплея Sleep sleep; //объект для ввода контроллера в сон void setup() { display.begin(); //инициализация дисплея display.setBacklight(100); //установка яркости в 100% display.print("INIT"); //отображение надписи INIT (инициализация) на дисплее delay(1000); //задержка в 1 секунду pinMode(button, INPUT); //режим вывода кнопки } void loop() { rtc.getTime(); //получение времени с часов byte hour = rtc.getHour(); //запись в переменную количество часов byte minute = rtc.getMinute(); //запись в переменную количество минут display.printTime(hour, minute, false); //вывод времени if (digitalRead(button)) { //была нажата кнопка set_alarm(minute); //установить будильник display.print("----"); //вывести четыре тире, означающие что контроллер спит sleep.pwrDownMode(); //установка режима сна PWR_DOWN //сон будет продолжаться пока на выводе wakeUpPin не поменяется уровень сигнала //в данном случае с "HIGH" на "LOW" sleep.sleepPinInterrupt(wakeUpPin, FALLING); //(номер вывода прерывания, состояние прерывания) //очистка будильника clr_alarm(); } } /* Процедура очищает регистры будильника на часах. * Требуется для корректной работы модуля часов. */ void clr_alarm() { detachInterrupt(1); //отключить прерывание номер 1 (вывод контроллера - 3) rtc.clearAlarm(); //очистить будильник delay(1000); //секундная задержка } /* Процедура устанавливает будильник на часах на одну минуту больше. * Здесь можно устанавливать будильник на любое время методом setAlarm(), * который принимает четыре параметра: * - минуты будильника * - часы будильника * - день будильника * - день недели будильника * Если любое из значений равно 99 - значит берется значение текущего времени. */ void set_alarm(const int& minute) { rtc.setAlarm(minute + 1, 99, 99, 99); //установка будильника на одну минуту display.clear(); //очистить дисплей display.print("ALAR"); //вывести надпись ALAR (ALARM) delay(1000); //подождать секунду display.clear(); //очистить дисплей } </file>