Робот OTTO и дисплей OLED i2c

uch-inf
Offline
Зарегистрирован: 06.02.2016

Добрый день уважаемые друзья. Подскажите как быть. Делаю робота отто https://www.ottodiy.com/. И хочу подключить дисплей oled i2c 128x64. просто стандартный скетч с движениями робота весит 23%. если подключаю дисплей и вывожу надпись то сразу 76% то есть остается не мало, с тем условием что еще не подключал библиотеку дальномера. Скажите как быть? НА дисплее хочу выводить эмоции (в роли рта будет, улыбки, грусть и т.п.) подскажите выход из ситуации. Может как то можно библиотеку уменьшить, оставить только команды для вывода картинок?  Или сделать что то еще? Спасибо кто откликнется. 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

uch-inf пишет:

подскажите выход из ситуации. 

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

uch-inf пишет:

Может как то можно библиотеку уменьшить

Может быть и можно, если умеете, только я не могу сказать насколько это трудно, Вы ведь даже не потрудились сказать что там за библиотека.

Logik
Offline
Зарегистрирован: 05.08.2014

Дальномер vl53lox с адафруктовой либо + своя компактная либа олед в ранее 20КБ программной памяти. Так, к сведенью. Дальномер очень громоздкая. Есть либа дальномера ещё одна, вроде немного полегче. Еще на гите пару смотрел - мрак, то без калибровки, то без обработки ошибок.Проценты ваши , это ОЗУ? Наверно на буфер экрана 1КБ ушло. То решаемо в принципе. Картинки статические можна прямо из флеша в экран пихать, но надо уметь.

Посмотрел что за робот, там похоже УЗ дальномер, с ним проще.

uch-inf
Offline
Зарегистрирован: 06.02.2016

Не назвал библиотеку так как их много и я не остановился на какой то именно. Я так понимаю что библиотека все символы держит в памяти ардуино? и поэтому занимает много места? А если убрать эти символы? Мне шрифты в принципе вообще не нужны, это уменьшит объем занимаемой памяти? 

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Вы, право, странный человек

uch-inf пишет:

Я так понимаю что библиотека все символы держит в памяти ардуино?

Я бы ещё понял, если бы Вы не знали, что

uch-inf пишет:

их много

и, открою страшный секрет, они разные и устроены по-разному.

uch-inf пишет:

Я так понимаю что библиотека все символы держит в памяти ардуино? и поэтому занимает много места? А если убрать эти символы?

Если Вы не пользуетесь шрифтами, их и без Вас из памяти уберут. Обычно проблема не в шрифтах, а в буфере экрана, но обсуждать это как-то глупо, пока речь идёт не о библиотеке, а о коне в вакууме.

В принципе, Вам нужна библиотека, которая не использует буфер экрана - они обычно непрожорливы.

5N62V
Offline
Зарегистрирован: 25.02.2016

Logic дело говорит: писать статичные картинки из флеша - наименее затратное для памяти средство. Да по большому счету можно и текст из флеша писать, просто правильно организовать доступ к фонту, не складируя его в буфер.

uch-inf
Offline
Зарегистрирован: 06.02.2016

Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?

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

uch-inf пишет:

Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?

Вопрос из серии "Как починить машину?" или "Как сшить пальто?"

Logik
Offline
Зарегистрирован: 05.08.2014

5N62V пишет:

Logic дело говорит: писать статичные картинки из флеша - наименее затратное для памяти средство. Да по большому счету можно и текст из флеша писать, просто правильно организовать доступ к фонту, не складируя его в буфер.

И даже в одной популярной на форуме либке так фонт и выводится. И в нескольких не популярных тоже.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

uch-inf пишет:

Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?

Могу, только боюсь, Вам опять не понравится. Я уже устал от того, что при любой попытке помочь новичку (а не сделать за него) в ответ получаешь хамский наезд: "мог бы просто написать две строчки кода, чем менторствовать, не хочешь помогать не пиши ничего". А я не хочу писать никаких строчек, т.к. считаю это бесполезным.

А сделать надо так:

1. Отложить в сторону проект робота
2. Создать пустой скетч, в нём определить картинку в виде массива в progmem
3. Просто вывести картинку на экран

и только когда это получится, возвращаться к роботу.

Кстати, первые два шага обязательны. Без них ничего не выйдет. Когда я не знаю как что-то сделать, я всегда пробую на крохотном коде, в котором нет НИЧЕГО, кроме того, что я в данный момент изучаю. А опыт программирования у меня - сорок лет. Если же Вы считаете, что сумеете сделать что-то новое в огромном коде, когда всё друг на друга влияет и непонятно из-за чего именно не работает, то флаг Вам в руки, я так не умею.

Как определять картинку массивом и как её выводить ... намекну чуть-чуть ...

uch-inf
Offline
Зарегистрирован: 06.02.2016

Большое спасибо. Опыт у меня есть но маленький, программист любитель) В принципе я всегда пробую на пустом скетче делать маленькие программы, а потом уже внедрять. Если вывести картинку таким образом, ведь картинка выводится с помощью все тех же библиотек, а ведь библиотека будет съедать память (опять же как я понял) на хранение шрифтов которые входят в состав библиотеки?  Получается нужно удалять из библиотеки все шрифты и команды которые к ним относятся? или я не так понимаю?

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

uch-inf пишет:

.... с помощью все тех же библиотек, а ведь библиотека будет съедать память (опять же как я понял) на хранение шрифтов которые входят в состав библиотеки?  Получается нужно удалять из библиотеки все шрифты и команды которые к ним относятся? или я не так понимаю?

Ну, во-первых, я Вам уже сказал, что 1) плевать на шрифты, если Вы их не используете, они в код не попадут; 2) нужна библиотека без буфера (кстати, такая есть прямо здесь на форуме от andriano, если Вы не поленитесь воспользоваться поиском)

Ну, и кроме того, разве в моём тексте

ЕвгенийП пишет:

А сделать надо так:

1. Отложить в сторону проект робота
2. Создать пустой скетч, в нём определить картинку в виде массива в progmem
3. Просто вывести картинку на экран

говорится. что это нужно делать "с помощью все тех же библиотек"? Вроде, нет.

nik182
Онлайн
Зарегистрирован: 04.05.2015

Не надо ничего удалять. Всё объёмное храниться в постоянной памяти. Её много. Нужно сделать так, что бы при резервировании  памяти и во время выполнения программы оперативная память тратилась по минимуму. Вам уже сказали, что для вывода на дисплей резервируют буферы. Они должны быть минимально необходимого размера. Строки выводить на печать с помощью макроса F().  

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

nik182 пишет:

Строки выводить на печать с помощью макроса F().  

У нево шрифты все покрали, ни одного нету. 

uch-inf
Offline
Зарегистрирован: 06.02.2016

Поиском умею пользоваться, но везде примеры только о там как вывести только с помощью библиотек ( Не могу найти информацию о том как самому вывести данные на экран(

Подскажите где искать

5N62V
Offline
Зарегистрирован: 25.02.2016

uch-inf пишет:

Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?

Абсолютно не важно ЧТО выводить. Научившись выводить хоть что-то, Вы одолеете и другое. Принцип одинаков, за исключением ньюансов. Для картинки:

1) размещаете битмап картинки в PROGMEM

2) когда нужно, считываете побайтно содержимое битмапа из флеша, и суете его дисплей.

Как именно слать данные в Ваш дисплей зависит от контроллера дисплея, точнее, от организации адресации его  графической памяти. На самом деле с этим бывает очень полезно разобраться, и тогда Вы , независимо от наличия и качества библиотек, сможете самостоятельно это все организовывать, как Вам удобнее.

Я по себе знаю, что иногда не знаешь как подступиться к проекту, и поэтому не можешь сформулировать точные вопросы. Соответственно точных ответов получить нет шансов. Поэтому начните хоть с чего-то, например с изучения контролера дисплея. 

Или возьмите библиотеку к этому дисплею, напишите код, который должен чего-то выводить, а что не получается - описывайте тут. Шансы на успех значительно повысятся.

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

В даташите дисплея (его драйвера/контроллера). Даташит тоже не можете найти?

Но Вас и библиотека устроит, только без буфера. Я уже говорил, здесь на форуме от andriano. Ищите.

Logik
Offline
Зарегистрирован: 05.08.2014

//Строки выводить на печать с помощью макроса F(). 

Тока не путайте его еще и с F(). Ему не строки и не на печать. Ему картинки и на экран. F() тут не при делах.

uch-inf смотри это http://arduino.ru/forum/proekty/asoled-kompaktnaya-biblioteka-dlya-oled-displeya-128kh64-s-kirillitsei-utf-8

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Logik пишет:
uch-inf смотри это
Чо, и поиск за ТС сделал?

Ну-ну, теперь, как порядочный человек, ты должен ему сопли подтирать пока он всё, что ему нужно не выведет куда-нибудь. Так бывает со всеми сердобольными выгуливателями лентяев. Успехов.

uch-inf
Offline
Зарегистрирован: 06.02.2016

Спасибо, нашел уже. Буду пробовать. Благодарен всем кто помог!

Logik
Offline
Зарегистрирован: 05.08.2014

Ворота пишет:

Logik пишет:
uch-inf смотри это
Чо, и поиск за ТС сделал?

 

Удавись, урка )))

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Неее, дорогой, удавливаться будешь ты, когда на голову сядут :)))

uch-inf
Offline
Зарегистрирован: 06.02.2016

Ворота пишет:

Неее, дорогой, удавливаться будешь ты, когда на голову сядут :)))

Я спросил помощи! Не хочешь не помогай, проходи мимо и иди в лес! Те кто помог тем благодарен! Я не просил за меня все делать. Сделаю я сам, просто надо было узнать в каком направлении мне смотреть! А ты давай до свидания!

b707
Offline
Зарегистрирован: 26.05.2017

uch-inf пишет:

Я не просил за меня все делать. Сделаю я сам, просто надо было узнать в каком направлении мне смотреть! А ты давай до свидания!

а как называется то что вы просили, если вы даже в поиске сами найти не можете?

Или "я все сделаю сам" означает "дайте мне готовый код, а скопирую я его сам?" :)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

uch-inf, вообще-то я не с тобой разговаривал, так что сам давай в лес, на болото или куда там тебе надо. Меня и здесь неплохо кормят.