пятница, 5 июня 2015 г.

Тотальное обновление библиотеки lib_Block7Seg, она же PrintTo7Seg

Еще на стадии написания библиотеки под блок для семисегментрого дисплея я понял, что выбрал не совсем правильный алгоритм, там информация в памяти хранится в виде выводимого текста, а в матрицу данных на светодиоды преобразуется каждый раз на лету при выводе на дисплей.
Во-первых, это затраты по времени, а во-вторых (что для меня важно) это не позволяло управлять отдельно любым светодиодом на дисплее, т.е. не давало возможности создавать кастомные символы и выводить какую-нибудь анимацию.
Но при написании библиотеки под Block7Seg_IC я уже подошел по другому, а заодно и переделал библиотеку для Block7Seg. Теперь в памяти хранится уже матрица данных на светодиоды.
Что дает возможность изменять состояние любого из них.
Добавил пару новых функций, но совместимость с предыдущей версией оставил.

Список функций:

setLed(location, led, state);
setDot(location, state);
setDigit(location, data);
getDigit(location);
setCursor(location);
autoscroll(void);
noAutoscroll(void);
clear(void);
home(void);
scrollDisplayLeft(void);
scrollDisplayRight(void);
Ну и конечно же функция Print().

PrintTo7Seg

Так же сделал дубль этой библиотеки но уже под другим именем и с возможностью задавать пины подключения дисплея в самой программе, а не в библиотеке.
Т.е. здесь вместо простого объявления переменной:
Block7Seg Seg7(COMMON_CATHODE);
Нужно писать:
byte numOfDigits = 4;
// digitPins - LSB to MSB
byte digPins[] = {3, 7, 8, A0 };
// segmentPins - Dp, A to G
byte ledPins[] = {6, 4, 9, A2, A3, 2, 5, A1};

PrintTo7Seg Seg7(numOfDigits, digPins, ledPins, 

COMMON_CATHODE);

Download

Скачать библиотеки можно на сайте Blockduino.org

Вот вывод примера "setLed_demo":


Ну и заодно вывод примера "Print_demo":