ASOLED - компактная библиотека для OLED дисплея 128х64 с кириллицей UTF-8

aidar_i
Offline
Зарегистрирован: 07.10.2018

andriano, не сможете добавить шрифт 24?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. И сколько строк с таким шрифтом поместится на экран? Две по 7 символов?

2. А это будет не слишком угловато? (у меня мысль - наоборот, сделать "родной" 12х16. Хотя бы для Mega/Due)

 

В общем - нет, я не думаю, что это целесообразно. Если Вам нужно - исходники в открытом доступе.

aidar_i
Offline
Зарегистрирован: 07.10.2018

Да, две строки устроило бы. К сожалению, я не смог. Это очень сложно сделать?

aidar_i
Offline
Зарегистрирован: 07.10.2018

Попробовал сам сделать. Ширину смог увеличить, но высоту нет. 

Здесь высоту увеличил

unsigned int EnlardeByte3Word(char b)
{
	unsigned int d = 0;
	for (byte i = 0; i < 8; i++)
	{
		unsigned int e = (((unsigned int)b) & (1 << i)) << i << i;
		d = d | e |(e << 1);
	}
	return d;
}

но не смог вывести все три части. 

Пока сделал как шрифт 18х16. 

Библиотека, правил файлы ASOLED.h, ASOLED.h

https://yadi.sk/d/B4cXmoa-YPZzDg

 

aidar_i
Offline
Зарегистрирован: 07.10.2018

andriano пишет:

1. И сколько строк с таким шрифтом поместится на экран? Две по 7 символов?

2. А это будет не слишком угловато? (у меня мысль - наоборот, сделать "родной" 12х16. Хотя бы для Mega/Due)

 

В общем - нет, я не думаю, что это целесообразно. Если Вам нужно - исходники в открытом доступе.

Две строки и нужно.

Вроде шрифт получается нормально, даже в варианте 16х18. На фото сравнение с шрифтом 12х16

Помогите, пожалуйста,  с высотой!

 

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

Высота должна быть кратна 8

aidar_i
Offline
Зарегистрирован: 07.10.2018

Это я знаю, но шрифт 24 уже состоит из трех частей по высоте, 2 части выводятся, а одна нет.

Когда 

Wire.write(lowByte(m)^textMode);верхнюю часть.

Wire.write(highByte(m)^textMode);нижнюю часть.

выводится верхние 2 части. Как вывести еще одну?

aidar_i
Offline
Зарегистрирован: 07.10.2018

 У меня получается только так! /sites/default/files/u41008/foto.jpg

smail
Offline
Зарегистрирован: 24.02.2019

не подскажите,как с помощью этой библиотеки выводить динамические данные?

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

дак динамически же

smail
Offline
Зарегистрирован: 24.02.2019

Ну я догадывался...,но не верил

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

Вот.  Теперь догадайся обьяснить, что ты имеешь ввиду, под выражением "динамические данные"

smail
Offline
Зарегистрирован: 24.02.2019

Имеется переменная «temp” ,например. Значение которой меняется в ходе выполнения программы. Требуется выводить ее значение на экран. 

Выше уже задавался такой вопрос, но остался без ответа.

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

есть функции, printString и printNumber.  Они, сопсно, и выводят все что угодно душе.  Можно сначала temp преобразовать в строку и вывести через printString, а если она имеет тип int то вывести можно через printNumber.  В тексте биб-ки можно подсмотреть парамеьры

smail
Offline
Зарегистрирован: 24.02.2019

Подробнее можно? Даже не знаю как смотреть текст библиотеки. 

Если темп это температура полученная от датчика, ее ещё как то нужно преобразовать? Как? И как эти преобразования скажутся на быстродействии?

 

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

это к автору, он часто сюда заходит

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

DetSimen пишет:

это к автору, он часто сюда заходит

Почему к автору то?

Автор не заявлял в библиотеке никаких функций преобазования температуры. Библиотека совсем не для этого написана.

smail
Offline
Зарегистрирован: 24.02.2019

Ээ. Вы не так поняли товарища, и меня видимо. Объясните пожалуйста как вывести на экран содержание переменной.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

На экран можно вывести только целые числа и строки. Все остальные типы переменных нужно предварительно преобразовать в троку.

Вывести можно разным размером шрифта - см. заголовочный файл библиотеки.

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

andriano пишет:

На экран можно вывести только целые числа и строки. 

Вывсёврети.  У Вас еще функция есть

byte printNumber(float float_num, byte prec=6, byte Y=255, byte numChar=255); // current font 

smail
Offline
Зарегистрирован: 24.02.2019

Извините за назойливость.Я просто не умею этого-посмотреть заголовочный файл библиотеки.Объясните если не сложно.

GoDr
GoDr аватар
Offline
Зарегистрирован: 14.02.2018

А запихнуть эту библиотеку в attiny13 реально?

PS

Под рукой нет контроллера... 

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

GoDr пишет:

А запихнуть эту библиотеку в attiny13 реально?

Нет

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

DetSimen пишет:

andriano пишет:

На экран можно вывести только целые числа и строки. 

Вывсёврети.  У Вас еще функция есть

byte printNumber(float float_num, byte prec=6, byte Y=255, byte numChar=255); // current font 

Нифига себе!

Надо будет удалить в следующей версии.

Вообще-то я уже не помню, что там есть, а чего нет, поэтому ориентировался на Ваше сообщение:
DetSimen пишет:
есть функции, printString и printNumber. Они, сопсно, и выводят все что угодно душе. Можно сначала temp преобразовать в строку и вывести через printString, а если она имеет тип int то вывести можно через printNumber. В тексте биб-ки можно подсмотреть парамеьры

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

small, посмотрите, там есть скетч с примерами Test_ASOLED.ino, там показано, как выводить числа, строки, битмапы, спрайты и даже простейший вид диаграммы.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Вернулся к этой библе.
Ребята, несколько вопросов.
Какая версия самая последняя и где взять?
Научилась ли библа выводить String или дальше приходится делать преобразование в массив char?
Как и чем нарисовать пару символов. Редактор на первых страницах не подходит, нет у меня MS Excel, есть OpenOffice, и в нем он не работает. Может кто попроще метод объяснить?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Последняя версия 0.4. Собственно, сама тема в "Проектах" была создана только тогда, когда библиотека уже была обсуждена на форуме и в нее внесены исправления.

Функциональность библиотеки расширять не планируется, т.к. одно из основных качеств - компактность. И терять это качество не хочется. Соответственно, поддержка новых типов (в особенности неблагоприятных для использования в микроконтроллерах) не планируется.

Нарисовать пару символов не так просто. В библиотеке для конмактности применена внутренняя нумерация символов, не совпадающая ни с одной кодовой страницей. Поэтому для расширения набора символов нужно править не только массив данных, но и сам код.

Вы уверены, что Вам нужны именно символы? Т.е. они будут обрабатываться и выводиться внутри строки?

Если просто нужны нестандартные значки, то их можно выводить как битмап.

kostyamat
Offline
Зарегистрирован: 16.11.2017

Ну, лично мне на данный момент нужна антеннка и линейка сигнала. И еще парочка мелочей, к примеру полностью заполненное знакоместо, чтобы вывести прогресс.

Жаль конечно, что String не поддерживается, хотя и не критично. А вот флоат вывести мне так и не удалось, вроде команду PrintNumber оформляю правильно, ставлю точность 2 знака, но выводит все равно целое. И хотелось бы средний шрифт, между большим и маленьким. А точно никак сделать шрифт кратным 4, а не 8-ми? Шрифт 10х12 было бы самое то.

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

kostyamat пишет:

 А точно никак сделать шрифт кратным 4, а не 8-ми? Шрифт 10х12 было бы самое то.

Никак, из-за специфики самого экранчика. 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

kostyamat пишет:

Ну, лично мне на данный момент нужна антеннка и линейка сигнала. И еще парочка мелочей, к примеру полностью заполненное знакоместо, чтобы вывести прогресс.

Для того, что Вы перечислили, по логике больше подходит битмап, нежели фонт.

Цитата:

А вот флоат вывести мне так и не удалось, вроде команду PrintNumber оформляю правильно, ставлю точность 2 знака, но выводит все равно целое.

А в демонстрационном примере работает? В чем разница?

Цитата:

И хотелось бы средний шрифт, между большим и маленьким. А точно никак сделать шрифт кратным 4, а не 8-ми? Шрифт 10х12 было бы самое то.

Без буфера - никак. На дисплее можно изменить только 8 смежных пикселей одновременно. Нарисовать часть из них сначала, а часть потом - невозможно. Если у Вас есть в этом необходимость, Вам нужна другая библиотека - с экранным буфером. Это стоит килобайт ОЗУ.