-
Notifications
You must be signed in to change notification settings - Fork 1
DetSimen/TM1637
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Небольшая библиотека для китайских четырехзначных светодиодных модулей на TM1637. Типа такого https://ru.aliexpress.com/item/32797695630.html с десятичными точками или такого https://ru.aliexpress.com/item/32797703570.html с двоеточием. На первом удобно делать всякие вольтметры, а на втором - погодные станции с часами :) Тип дисплея описан как enum class enTM1637Type : bool { Number = false, Time = true }; // перечисление: тип дисплея числа/время в конструкторе, наряду с другими параметрами, указывается тип подключенного дисплея, часы или числа. TM1637 Display(ClockPin, DataPin, DisplayType); Например, TM1637 Display(11, 10, enTM1637Type::Number); для индикатора с точками TM1637 Display(11, 10, enTM1637Type::Time); для индикатора с двоеточием Тип дисплея в конструкторе можно и не указывать, тогда автоматом будет считаться, что подключен модуль с двоеточием, для часов. TM1637 Display(11, 10); подключен индикатор с двоеточием Библиотека умеет выводить строки функцией Print с параметром const char *. Естесственно, если строка длинная, из неё выводятся только первые 4 символа, остальные отбрасываются. Но иногда и 4 символа могут оказаться полезными Display.Print("Err5"); когда, например надо сигнализировать об ошибке, а под рукой нету других экранчиков символы, которые может вывести библиотека описаны в массиве, хранящимся в PROGMEM, чтоб не занимать драгоценное ОЗУ static const T1637SegmentData SegmentsData[] PROGMEM { { '0',0x3F }, { '1',0x06 }, { '2',0x5B }, { '3',0x4F }, { '4',0x66 }, { '5',0x6D }, { '6',0x7D }, { '7',0x07 }, { '8',0x7F }, { '9',0x6F }, { 'A',0x77 }, { 'b',0x7c }, { 'C',0x39 }, { 'd',0x5E }, { 'E',0x79 }, { 'F',0x71 }, { ' ',0x00 }, { '-',0x40 }, { '*',0x63 }, // значок градуса, т.е пишем -25* выведется -25 и значок градуса { '_',0x08 }, { 'r',0x50 }, { 'H',0x76 }, { 'I',0x06 }, { 'h',0x74 }, { 'L',0x38 }, { 'n',0x54 }, { 'o',0x5C }, { 't',0x78 }, { 'O',0x3F }, { 'P',0x73 }, { 'S',0x6D }, { 'U',0x3E }, { 'u',0x1C }, { 'Y',0x6E } }; Таблицу можно самому изменять/дополнять своими экзотическими буквами инопланетных словарей, больше нигде ничего править не нужно, только изменить/добавить строчку в массив по аналогии с имеющимися парой "символ"-"его матрица" в проекции на сегменты. Можно вывести знаковое двухбайтное целое функцией Print(Num); Display.Print(-50); или int val = analogRead(A0); Display.Print(val); естественно, если число больше 4 знаков, оно обрежется, т.е 32767 вывести не получится, выведется 3276 Еще функцией Print() можно вывести число с плавающей точкой, но, естественно, тоже с ограничением в первых 4 цифры. Если тип дисплея - числовой, то запятая выведется в правильном месте, если дисплей для времени, то точек в нем нет, поэтому на него нецелые числа выводить бессмысленно. Display(PI); выведет 3.141 Display(1.5); выведет 1.5 Числа по умолчанию выравниваются по правому краю дисплея, а строки - по левому Функцией PrintTime(часы,минуты) можно вывести время с ведущими нулями и по правильным сторонам от двоеточия Display.PrintTime(Clock.GetHours(), Clock.GetMinutes()); или Display.PrintTime(9,6); выведет 09:06 Функцией PrintDeg(int8_t Temperature); можно быстро вывести температуру со значком градуса на конце Display.PrintDeg(-15); выведет -15* печать одного символа в определенном месте экрана APosition - в какой позиции печатать 0..NUM_DIGITS-1 ASymbol - символ, который надо напечатать символ сразу же перекодируется и выводится ничего больше вызывать не надо void PrintAt(const uint8_t APosition, const char ASymbol); Функцией ToggleColon() удобно пользоваться когда делаешь часы, она переключает двоеточие с вкл на выкл и обратно, можно самому не запоминать нужно ли сейчас гасить или зажигать двоеточию, функция сама разберется, главное её вызвать вовремя. Display.ToggleColon(); Точку/двоеточие можно включить/выключить вручную, функцией ShowPoint() с параметром true/false. Display.ShowPoint(true); включить точку Display.ShowPoint(false); выключить точку Яркость свечения устанавливается функцией Display.SetBrightness(0..7); c параметром в виде числа от 0 (минимальная яркость) до 7 (макс. яркость) Ну и для очистки - есть функция Clear(), вызываешь и дисплей становится тёмный и страшный, как моя жызнь. Display.Clear(); Список публичных функций, которые можно вызывать снаружи, внимательно читаем описания к ним // канструктор. Принимает 2 пина (обязательно) и тип дисплея (необязательно) // AClockPin - номер пина для тактирования (вывод CLK на дисплейчике) // ADataPin - номер пина для данных (вывод DAT на дисплейчике) // ADisplayType - тип дисплея, для чисел или для времени (с точками/двоеточием) // по умолчанию - выбран дисплей с двоеточием (для времени) // TM1637(uint8_t AClockPin, uint8_t ADataPin, enTM1637Type ADisplayType = enTM1637Type::Time); // печатает первые NUM_DIGITS символов переданной строки // с выравниванием. По умолчанию, выравнивание - влево // void Print(const char *AString, const enTM1637Align AAlign = enTM1637Align::Left); // печатает двухбайтовое целое число со знаком // по основанию ARadix (по умолчанию 10) // число выравнивается вправо // печатается не более NUM_DIGITS начальных цыфр числа, включая знак // void Print(const int ANumber, const uint8_t ARadix = 10); // печать дробных чисел со знаком. // c точностью APrecision знаков после запятой, по умолчанию - 2 // Если число длинное - печатаются первые NUM_DIGITS символов // Если индекс точки находится в пределах 0 - NUM_DIGITS то она тоже печатается // void Print(const double AValue, const uint8_t APrecision = 2); // для удобства печати времени, передаёшь часы/минуты, печатает // на своих местах, слева и справа от двоеточия // void PrintTime(const uint8_t AHours, const uint8_t AMinutes); // для удобства. Передаешь число (со знаком) - печатает его и символ градуса за ним // void PrintDeg(const int8_t ADegrees); // очистка дисплея // void Clear(void); // устанавливает яркость дисплея от 0 до 7. 7 - самый яркий. // void SetBrightness(const uint8_t AValue); // включает/выключает показ десятичной точки // void ShowPoint(const bool APointVisible); // переключает точку. если была включена - выключает и наоборот // удобно мигать двоеточием в часах, не надо самому запоминать состояние // void ToggleColon(void); // печать символа в определенном месте экрана // APosition - в какой позиции печатать 0..NUM_DIGITS-1 // ASymbol - символ, который надо напечатать // символ сразу же перекодируется и выводится // ничего больше вызывать не надо // void PrintAt(const uint8_t APosition, const char ASymbol); // аналогично Print(const char *AString) // только оператором, чтоб можно было писать // tm1637<<"Err2"; // const TM1637 &operator <<(const char *AString) { OutString(AString); return *this; } }; - можно спокойно выкинуть из кода
About
биб-ка для китайского светодиодного модуля на 4 цифры
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published