TM1637

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Задолбался исправлять косяки в библиотеках для TM1637 разной степени кривоватости

Написал себе свою, еще более прецказуемую. 

нужна камунить с такими методами? 

public:
// канструктор. Принимает 2 пина (обязательно) и тип дисплея (необязательно)
// AClockPin - номер пина для тактирования (вывод CLK на дисплейчике)
// ADataPin  - номер пина для данных (вывод DAT на дисплейчике)
// ADisplayType - тип дисплея, для чисел или для времени (с точками/двоеточием)
// по умолчанию - выбран дисплей с двоеточием (для времени)
//
	TM1637(uint8_t AClockPin, uint8_t ADataPin, enTM1637Type ADisplayType = enTM1637Type::Time);

// печатает строку
//
	void Print(const char *AString);

// печатает двухбайтовое целое число со знаком
// по основанию ARadix (по умолчанию 10)
// число выравнивается вправо
// печатается не более NUM_DIGITS начальных цыфр числа, включая знак
//
	void Print(const int ANumber, const uint8_t ARadix = 10);


// печать дробных чисел со знаком. 
// Если число длинное - печатаются первые NUM_DIGITS символов
// Если индекс точки находится в пределах 0 - NUM_DIGITS то она тоже печатается
//
	void Print(const double AValue);


// для удобства печати времени, передаёшь часы/минуты, печатает 
// на своих местах, слева и справа от двоеточия
//
	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) {
		if (FDisplayType == enTM1637Type::Time);


// вывод символа в определенную позицию
// 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);
};

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

DetSimen пишет:

Написал себе свою, еще более прецказуемую. 

Ашыпся, читать:  "еще более непрецказуемую." 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

А во встроенной либе, какие ещё есть косяки, окромя зависания при вызове display с параметром byte ?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а встроенная - это какая?  У мня не было встроенной, я с Гита их штук шесть перепробовал, по убыванию звёзд. 

А. Еще горизонтальный скроллинг хачю приделать, чтоб бегущие строки выводить.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

DetSimen пишет:

 

нужна камунить с такими методами? 


да

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017
astwo
Offline
Зарегистрирован: 10.07.2019

Со скролингом строки есть два пути(падецки и непадецки) , третий ничего не делать. Пацецки это скролинг показ. Объявить размеры экрана и программно скролинг паказывать. Но даже это дополнение будет сложно для ардуино дебилов.

sadman41
Offline
Зарегистрирован: 19.10.2016

Могу бесплатно ускорить в три раза.