test:6: error: stray '\' in program
test:3: error: no matching function for call to 'LCD1202::LCD1202(int, int, int)'
C:\Yandexdisk\arduino-1.0.6\libraries\LCD1202/LCD1202.h:7: note: candidates are: LCD1202::LCD1202()
C:\Yandexdisk\arduino-1.0.6\libraries\LCD1202/LCD1202.h:7: note: LCD1202::LCD1202(const LCD1202&)
test.ino: In function 'void setup()':
test:6: error: 'class LCD1202' has no member named 'u0421lear'
Накидал примерчик работы с каждой ее функцией и подробно его откоментировал. Библиотека упакована, устанавливать можно стандартно, пакетом zip из меню Arduino IDE или ручками, кому, как удобнее.
Все Ваши плюшки в полном комплекте, есть идеи добавить еще, кое какие вкусности, но пока думаю этого достаточно.
Памяти правда ест будь здоров! Если скомпилировать пример весь, для UNO, то показывает, что 31% сьел сам скетч и 61% памяти использовано всего. То есть библиотека съедает 30% памяти UNO , а если скомпилировать пустой скетч, оставив только инициализацию и очистку, то среда показывает, что библиотека съела 42% памяти UNO, нужно ей еще заниматься, отимизировать код. Тестируйте.
на самом деле оперативка съедается буфером в основном, а флеш шрифтами. но я, когда не хвататло памяти, просто из шрифтов выкидывал лишние символы и правил drawchar. это сильно экономило память. есть еще старые коды где без буфера и там вывод только текста по строкам, я его и на тиньке запускал
Про ресет я знаю, все тестировал, но решил оставить отделным пином, на будущее, вдруг придется им рулить в каком то девайсе. А билиотека эта у меня у самого первая для Arduino, так что могут быть грабли, но пока вроде все работает, хотя еще тестирую.
а еще есть наработки как через spi подключать дисплей. еще быстрее получается вывод. но spi часто занят, и проще повесить на доступные пины. я nokia 1616 подключал черзе spi. скорость намного выше. там передавать очень много. разрешение выше, да и цвет
Да верно, я функции не трогал, так как проверил все предварительно и убедился в их работоспособности.
Сейчас убрал задержки и лишнюю строку, стало заметно быстрее, очень заметно на рисовании линии попиксельно.
Описание функций оставил прежним, поясню: я когда начал вкуривать что почем, не совсем ясно было, посмотрев тип переменной, все встает на свои места, например цвет, тип бинарный, сразу ясно, что значения может быть только два и т.д. Пользователь ведь не видит библиотечных файлов, а пример перед глазами. Ну ХЗ, как говорится на вкус и цвет... Это ведь просто коменты, на размер они не влияют.
А вот насчет лишней строки, пока я ее убрал и либу залил вновь на диск с номером версии 1.1. Но как я понял, еще не до конца все вкурил, эта строка, часть преобразования числового значения в аски код цыфры, для его вывода в функцию вывода символа на дисплей. Это нужная функция, ее очень желательно добавить в библиотеку для удобного вывода цифровых значений.
Примеры переключения с программного на аппаратный спи у меня тоже есть, это в будущем. Я много библиотек попробовал и много перелопатил, везде, что то не работало. Я не спеша эту перебирал, а потом увидел активность в этой теме и решил выложить то, что уже готово. Зачем изобретать велосипед. Дисплейчики эти хорошие, до сих пор в ходу, стоят дешево, работают быстро. Я купил 4 штуки недавно по 65р., адаптеры под них сваял. Очень хорошие дисплеи.
по хорошему надо переписать чтобы печатать через print как для дисплея 1602, но пока не знаю как это сделать. смотрел разные либы чтобы разобраться, но пока не понял
самому нравятся эти дисплеи, в свое время по 25 рублей вроде купил 20 штук в профи
Библиотека так написана что если при очередной интерации ничего не печатаем, будет пустой экран т.к. массив каждый раз после вывода на часть экрана, полностью отчищается.
Хотя на самом деле при инициализации экран отчищается вот таким макаром
for (int i=0; i<(X_RES*8); i++) // Lcd Clear
{ //
LcdWrite(LCD_D, 0x0); //
} // end clear
но это происходит , как я уже сказал, аХтоматически и , как правило, в дальнейшем в этом нет надобности.
Gres а как сделать в вашей библиотеке для 1202 функции вывода символа и строки в координатах не пиксельно, а как в библиотеке у Jeka_tm блоками? Делаю менюшку на дисплейчике от 1202,за основу взял проект https://rln.nnov.ru/index.php?ind=reviews&op=entry_view&iden=211# с бибой Jeka_tm все вроде как хорошо,но понравилось как с вашей бибой, собрал все в кучу и зараз все вывел,но у вас установка вывода строк и символов в пикселах и тут у меня не срастается,строки лезут друг на друга.
камерады, подскажите , плз, как проверить на Ардуино УНО дисплей 1100? пытаюсь загрузить код с первой страницы(любезно предоставленный jeka_tm, но вылазит ошибка
Arduino: 1.6.5 (Windows 7), Плата"Arduino Uno"
In file included from D:\Arduino\arduino-1.6.5-r2\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,
from D:\Arduino\arduino-1.6.5-r2\libraries\Nokia1100-2\Nokia2.cpp:1:
D:\Arduino\arduino-1.6.5-r2\libraries\Nokia1100-2\NokiaChars.h:7:29: error: variable 'font' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
static unsigned char font[] PROGMEM = {
^
Ошибка компиляции.
Iwan73 не совсем понял о чем Вы. Автор всех исходников Jeka_tm, я просто собрал их в библиотеку, для более удобного применения. Меню Jeka_tm делал отдельными, подготовленными экранами и переключался между ними. Причём экраны могут состоять одновременно из текста и изображений, их просто нужно правильно разместить. Можете посмотреть исходники его проекта хронографа, там все очень понятно. Именно из этих исходников я и собрал библиотеку.
/* Эта функция обрисовывает экран
В качестве входного параметра - определенная комбинация кнопок. Как хотите. так и выводите как говорится.*/
void dispStaticDraw(byte buttons)//Рисует сепараторы, и кнопки. общая функция для всех модулей.
{
Lcd.Clear();
Lcd.HLine(0, 8, 96, PIXEL_ON);//верхний сепаратор
Lcd.HLine(0, 50, 96, PIXEL_ON);//нижний сепаратор
//CursorTo(0,0);//ставим курсор
switch (buttons)
{
case 0://обычный набор кнопок "< - + >"
Lcd.GotoXY(0,7);
Lcd.PrintF(PSTR(" < - + > "));//кнопки
buttSeparators(4);//Сепараторы между кнопками
break;
}
Lcd.Rect (0, 52, 95, 67, FILL_ON, PIXEL_INV);//подсветка кнопок
}
//рисуем перемычки в прямоугольнике (разделяем кнопки)
void buttSeparators(byte butt)
{
for (int i=1;i<butt;i++)
Lcd.VLine (24*i, 52, 16, PIXEL_ON);
}
выводится на дисплей около 3 секунд ( Lcd.Rect (0, 52, 95, 67, FILL_ON, PIXEL_INV);//подсветка кнопок)
тот же хрен но в другой упаковке (с использованием вашей бибы),соответственно и результат другой,то что надо, раз и все на экране одним махом.
void dispStaticDraw(byte buttons)//Рисует сепараторы, и кнопки. общая функция для всех модулей.
{
lcd.drawFastHLine(0, 9, 96, 1); //Выводим по координатам x, y, горизонтальную линию, длиной 96 пикселей, черным цветом
lcd.drawFastHLine(0, 55, 96, 1); //Выводим по координатам x, y, горизонтальную линию, длиной 96 пикселей, черным цветом
switch (buttons)
{
case 0://обычный набор кнопок "< - + >"
lcd.drawString(1, 59, 0, " < - + > ");//кнопки
buttSeparators(4);//Сепараторы между кнопками
break;
}
lcd.fillRect(0,57,96,11,1);//подсветка кнопок
}
//рисуем перемычки в прямоугольнике (разделяем кнопки)
void buttSeparators(byte butt)
{
for (int i=1;i<butt;i++)
lcd.drawFastVLine(24*i, 57, 11, 0); } //Выводим по координатам x, y, вертикальную линию, высотой 16 пикселей, черным цветом
}
но вот в дальнейшем начинается затык,там дальше в программе будут выводиться символы и строки, у Jeka_tm есть функции вывода строки или символа в координаты по горизонтали 16 знакомест, по вертикали - 8, и с ними как раз вывод получается в нужные места. У вас к сожелению вывод в пиксельные координаты,что не дает нужного результата. А теперь самокритика - знаний,опыта и мозгов не хватает что бы в ваш вариант бибы добавить функции с возможностью вывода строк и символов в координаты по знакоместам как у Jeka_tm. Вот я о чем. если сможете помочь то было бы неплохо, и функционал библиотеки увеличится,ведь дейтвительно пока в пикселах подберешь координаты вывода,иногда немного неудобно. но это мое личное мнение.
ты предлагаешь строки сделать как в 1602 сделать чтобы поменьше координат писать? да можно. но по сути это просто еще одну функцию добавить. ничего сложного
Вставьте в свой скетч такую функию и используйте ее, на днях добавлю в либу, сейчас дома дисплейчик, хочу сначала попробовать, как это будет выглядеть, но должно быть нормально.
Вот в этом вся суть программирования, способов масса, у каждого своё видение решения проблемы! :)
Ну а по сути, все тестировать нужно, для определения оптимального.
Для себя я уже писал, вполне устраивает добавление пробелов в строки, но как говорится на вкус и цвет... :)
При написании библиотек руководствуюсь принципом - "Всё нужное не сложно, всё сложное не нужно", но на самом деле всегда стараюсь экономить при любом удобном случаи, даже если речь идёт о паре байтов. А в вышепредложеном способе дополнительно занимается не только программная память, но и РАМа да и не такими уж и маленькими массивами, [16] и [7] байт.
Ну а в общем всё верно, каждый ищет для себя оптимальное решение...
А вообще если речь идёт об истользовании PCF8814 исключительно как символьного, то нет смысла использовать граффические библиотека. При выведении только символов, их можно печатать когда угодно и сразу (не занося в массив, а потом решать когда выводить сам массив. Так будет сэкономленно пипец как много времени и весь исходник не будет сягивать всё внимание на экранчик и всё время подстраиваться под него.
Все верно, полностью согласен. Но тут то вся суть в чем, все это делается исключительно для удобства и для начинающих, для возможности быстро освоиться с материалом. Тот, кому нужна будет скорость и экономия, возьмёт только самое нужное, не используя либы вообще. Изначально есть интерес запустить девайс вообще, а уж потом приходит желание или необходимость оптимизировать код, но в большинстве случаев, для сэбя, и это лишнее. Жаться начинаешь для экономии, для использования более дешёвых процов, с меньшими ресурсами, для увеличения быстродействия. Чаще все это актуально для коммерческих проектов.
вот алгоритм и некоторые настройки чтоб долго не разбираться
//алгоритм создания шрифта для LCD PCF8812, PCF8814
//*****Настройки***Преобразование
//установить "свой алгоритм"
for (var z = 0; z < image.height/8; z++){
for (var x = 0; x < image.width; x++) {
for (var y = 7; y > -1; y--) {
image.addPoint(x, y+(8*z));
}
}
}
//Тип: Монохромноо
//установить "Инвертировать"
//Основное сканирование: Слева направо
//Сканирование линий: Прямое
// Открыть предпросмотр...
блин делать библиотеки не мое. нужна помощь
а сам массив то где? Не вижу его объявления. LCD_RAM[]
А вот это чему равно LCD_X, LCD_Y ???
я этот кусок еще не оформил. до него не дошло
так а в чём проблема то?
ошибки сыпет в которых не получилось разобраться
Судя по скетчу у тебя в папке библиотек находится и та, с которой ты передирал. Премести ту бибу в другое место и разбирайся с классами.
Собрал из Ваших исходников Хронометра библиотеку для дисплея Nokia1202 с контроллером STE2007.
Накидал примерчик работы с каждой ее функцией и подробно его откоментировал. Библиотека упакована, устанавливать можно стандартно, пакетом zip из меню Arduino IDE или ручками, кому, как удобнее.
Все Ваши плюшки в полном комплекте, есть идеи добавить еще, кое какие вкусности, но пока думаю этого достаточно.
Памяти правда ест будь здоров! Если скомпилировать пример весь, для UNO, то показывает, что 31% сьел сам скетч и 61% памяти использовано всего. То есть библиотека съедает 30% памяти UNO , а если скомпилировать пустой скетч, оставив только инициализацию и очистку, то среда показывает, что библиотека съела 42% памяти UNO, нужно ей еще заниматься, отимизировать код. Тестируйте.
Жека, еще раз спасибо!
тебе спасибо
на самом деле оперативка съедается буфером в основном, а флеш шрифтами. но я, когда не хвататло памяти, просто из шрифтов выкидывал лишние символы и правил drawchar. это сильно экономило память. есть еще старые коды где без буфера и там вывод только текста по строкам, я его и на тиньке запускал
посмотрел код. res в принципе необязателен, но он не будет тормозить отрисовку, так как в sendbyte его нет
и я не знал что необязательно переделывать типы переменных в uint8_t. время только потратил
Про ресет я знаю, все тестировал, но решил оставить отделным пином, на будущее, вдруг придется им рулить в каком то девайсе. А билиотека эта у меня у самого первая для Arduino, так что могут быть грабли, но пока вроде все работает, хотя еще тестирую.
эта строка лишняя в либе
описание основных функций лучше так, типов
задержки в sendbyte в принципе не нужны. насколько помню без них прекрасно работает. а выводится будет гораздо быстрее
я добавлял когда искал косяк один в коде для дисплея, но оказался не в ней, а убрать забыл
а еще есть наработки как через spi подключать дисплей. еще быстрее получается вывод. но spi часто занят, и проще повесить на доступные пины. я nokia 1616 подключал черзе spi. скорость намного выше. там передавать очень много. разрешение выше, да и цвет
позже наверно массив 10х16 и 16х32 переделаю. уж больно жирные. можно за счет процессорного времени сократить объем
Да верно, я функции не трогал, так как проверил все предварительно и убедился в их работоспособности.
Сейчас убрал задержки и лишнюю строку, стало заметно быстрее, очень заметно на рисовании линии попиксельно.
Описание функций оставил прежним, поясню: я когда начал вкуривать что почем, не совсем ясно было, посмотрев тип переменной, все встает на свои места, например цвет, тип бинарный, сразу ясно, что значения может быть только два и т.д. Пользователь ведь не видит библиотечных файлов, а пример перед глазами. Ну ХЗ, как говорится на вкус и цвет... Это ведь просто коменты, на размер они не влияют.
А вот насчет лишней строки, пока я ее убрал и либу залил вновь на диск с номером версии 1.1. Но как я понял, еще не до конца все вкурил, эта строка, часть преобразования числового значения в аски код цыфры, для его вывода в функцию вывода символа на дисплей. Это нужная функция, ее очень желательно добавить в библиотеку для удобного вывода цифровых значений.
Примеры переключения с программного на аппаратный спи у меня тоже есть, это в будущем. Я много библиотек попробовал и много перелопатил, везде, что то не работало. Я не спеша эту перебирал, а потом увидел активность в этой теме и решил выложить то, что уже готово. Зачем изобретать велосипед. Дисплейчики эти хорошие, до сих пор в ходу, стоят дешево, работают быстро. Я купил 4 штуки недавно по 65р., адаптеры под них сваял. Очень хорошие дисплеи.
та лишняя строка была нужна для хронометра для хранения значений и к либе отношения не имеет
вот посмотри как я числовые выводил недавно. костыль конечно, временное решение
по хорошему надо переписать чтобы печатать через print как для дисплея 1602, но пока не знаю как это сделать. смотрел разные либы чтобы разобраться, но пока не понял
самому нравятся эти дисплеи, в свое время по 25 рублей вроде купил 20 штук в профи
Вот еще чего нашел, тут, проверил, работает:
Но это для целочисленных значений, float нужно делить по разрядам.
hugoboss317, а как в вашей библиотеке очищать дисплей?
АХтоматически ))
Это как?
Библиотека так написана что если при очередной интерации ничего не печатаем, будет пустой экран т.к. массив каждый раз после вывода на часть экрана, полностью отчищается.
Хотя на самом деле при инициализации экран отчищается вот таким макаром
но это происходит , как я уже сказал, аХтоматически и , как правило, в дальнейшем в этом нет надобности.
Gres а как сделать в вашей библиотеке для 1202 функции вывода символа и строки в координатах не пиксельно, а как в библиотеке у Jeka_tm блоками? Делаю менюшку на дисплейчике от 1202,за основу взял проект https://rln.nnov.ru/index.php?ind=reviews&op=entry_view&iden=211# с бибой Jeka_tm все вроде как хорошо,но понравилось как с вашей бибой, собрал все в кучу и зараз все вывел,но у вас установка вывода строк и символов в пикселах и тут у меня не срастается,строки лезут друг на друга.
А если бы туда еще и от бибы hugoboss317 дополнить выбором шрифта так вообще был бы универсальный инструмент для работы с данным дисплеем.
камерады, подскажите , плз, как проверить на Ардуино УНО дисплей 1100? пытаюсь загрузить код с первой страницы(любезно предоставленный jeka_tm, но вылазит ошибка
пытаюсь залить другой код
заливается, но на экране пустота
так тут же рабочая либа по моим исходникам
http://arduino.ru/forum/programmirovanie/biblioteka-dlya-lcd-nokia-1100?...
проверь ее
которая для 1202? вгрузил, соединил свой 1100 так: LCD1202 lcd(6, 7, 8, 9); // RST, CS, SDA, SCL
заработало! спасибо!
теперь осталось к проекту на Атмега8 прикрутить.
на мегу восьмую тебе нужна либа hugoboss317. для этой оперативки не хватит в меге8
да я только индикатор проверил на УНО.
а собираю проект, не на Ардуино, просто на Атмега8. пока завис на стадии запуска и проверки индикатора.
Тебе ж сказали что на АТ8 оперативки (1кБ) не хватит. Я писал бибу принципиально для оперативы 1 кБ.
за библиотеку - спасибо! касательно остального - если прочесть мой пост чуть выше твоего - станет многое понятно ;)
я только проверил индикатор, в Атмегу 8 я не собираюсь заливать это, там будет совершенно другой проект.
НУ тогда удачи.
Я видимо не так понял.
Iwan73 не совсем понял о чем Вы. Автор всех исходников Jeka_tm, я просто собрал их в библиотеку, для более удобного применения. Меню Jeka_tm делал отдельными, подготовленными экранами и переключался между ними. Причём экраны могут состоять одновременно из текста и изображений, их просто нужно правильно разместить. Можете посмотреть исходники его проекта хронографа, там все очень понятно. Именно из этих исходников я и собрал библиотеку.
Jeka_tm отдельное спасибо за то что предоставил людям возможность пользоваться плодами его труда. Но во всем есть свои плюсы и минусы.
MenuOS v0.6-RC1 по ссылке https://rln.nnov.ru/index.php?ind=reviews&op=entry_view&iden=211 адаптирую в своем проекте под дисплейчик 1202,пробовал вариант вывода на дисплей экрана меню с библиотекой от Jeka_tm .
выводится на дисплей около 3 секунд ( Lcd.Rect (0, 52, 95, 67, FILL_ON, PIXEL_INV);//подсветка кнопок)
тот же хрен но в другой упаковке (с использованием вашей бибы),соответственно и результат другой,то что надо, раз и все на экране одним махом.
но вот в дальнейшем начинается затык,там дальше в программе будут выводиться символы и строки, у Jeka_tm есть функции вывода строки или символа в координаты по горизонтали 16 знакомест, по вертикали - 8, и с ними как раз вывод получается в нужные места. У вас к сожелению вывод в пиксельные координаты,что не дает нужного результата. А теперь самокритика - знаний,опыта и мозгов не хватает что бы в ваш вариант бибы добавить функции с возможностью вывода строк и символов в координаты по знакоместам как у Jeka_tm. Вот я о чем. если сможете помочь то было бы неплохо, и функционал библиотеки увеличится,ведь дейтвительно пока в пикселах подберешь координаты вывода,иногда немного неудобно. но это мое личное мнение.
ты предлагаешь строки сделать как в 1602 сделать чтобы поменьше координат писать? да можно. но по сути это просто еще одну функцию добавить. ничего сложного
jeka_tm помогите с этой функцией,плииз
сейчас времени нет. как появится набросаю
jeka_tm помогите с этой функцией,плииз
Вставьте в свой скетч такую функию и используйте ее, на днях добавлю в либу, сейчас дома дисплейчик, хочу сначала попробовать, как это будет выглядеть, но должно быть нормально.
В лупе, вызываете функцию:
Как понятно из названия, доступно 16 знакомест в каждой из 7 строк.
Библиотеку обновил, версия 1.3, старые там же, в папке Old.
С либой, стандартно есть пример с коментариями, как использовать новую функцию.
Новую библиотеку в железе еще не тестировал, нет с собой дисплейчика, позже проверю.
Тестируйте.
а в чем разница?
+ нашел в описании
а в чем разница?
Да нет там разницы, человек просил функцию вывода текста, как на 1602, я ее добавил.
Теперь есть еще одна функция, позволяющая выводить строки в формате 1607.
Только в железе я ее еще не попробовал, нет с собой дисплея.
Для меня эта функция не очень нужной кажется, я прекрасно справляюсь пробелами.
Но собственно добаить то не сложно.
А нельзя было просто
Нахрена эти массивы?
тогда 9 или 10, а не 8
Ну это от самого шрифта зависит и от желания, какое расстояние между символами. Я к тому что это просто делается, без массивов.
да можно. но с массивом быстрее, с умножением возможно меньше по размеру
Вот в этом вся суть программирования, способов масса, у каждого своё видение решения проблемы! :)
Ну а по сути, все тестировать нужно, для определения оптимального.
Для себя я уже писал, вполне устраивает добавление пробелов в строки, но как говорится на вкус и цвет... :)
При написании библиотек руководствуюсь принципом - "Всё нужное не сложно, всё сложное не нужно", но на самом деле всегда стараюсь экономить при любом удобном случаи, даже если речь идёт о паре байтов. А в вышепредложеном способе дополнительно занимается не только программная память, но и РАМа да и не такими уж и маленькими массивами, [16] и [7] байт.
Ну а в общем всё верно, каждый ищет для себя оптимальное решение...
А вообще если речь идёт об истользовании PCF8814 исключительно как символьного, то нет смысла использовать граффические библиотека. При выведении только символов, их можно печатать когда угодно и сразу (не занося в массив, а потом решать когда выводить сам массив. Так будет сэкономленно пипец как много времени и весь исходник не будет сягивать всё внимание на экранчик и всё время подстраиваться под него.
Все верно, полностью согласен. Но тут то вся суть в чем, все это делается исключительно для удобства и для начинающих, для возможности быстро освоиться с материалом. Тот, кому нужна будет скорость и экономия, возьмёт только самое нужное, не используя либы вообще. Изначально есть интерес запустить девайс вообще, а уж потом приходит желание или необходимость оптимизировать код, но в большинстве случаев, для сэбя, и это лишнее. Жаться начинаешь для экономии, для использования более дешёвых процов, с меньшими ресурсами, для увеличения быстродействия. Чаще все это актуально для коммерческих проектов.
По случаю, раз уж наведываюсь всюда, набросал пару шрифтов 16х24 цифры и 12х16 полный, включая русские вимволы, возможно кому полезными окажутся.
Кстати русский который я рисовал для цветного A_70 с совсем другим алгаритмом вывода символов но вот в этой программе
LCD Image Converter
есть несколько агаритмов и можно написать свой, что я и сделал, сэкономив кучу времени.
Короче вот сайт программы http://www.riuson.com/lcd-image-converter
вот алгоритм и некоторые настройки чтоб долго не разбираться
Шрифт 16х24
шрифт 12х16
Спасибо,еще не пробовал,на работе напряги до поздна,сегодня попробую обязательно.
Спасибо за шрифты и прога пригодится.
Проверил либу в железе и нашел косяк, на скоряк исправил и заменил ее, теперь там исправленная и проверенная версия, все работает.
Но получилось не так, как хотелось, слишком окольные пути. Сейчас все работает, а позже покопаюсь, отлажу и заменю.