Робот OTTO и дисплей OLED i2c
- Войдите на сайт для отправки комментариев
Ср, 13/11/2019 - 23:19
Добрый день уважаемые друзья. Подскажите как быть. Делаю робота отто https://www.ottodiy.com/. И хочу подключить дисплей oled i2c 128x64. просто стандартный скетч с движениями робота весит 23%. если подключаю дисплей и вывожу надпись то сразу 76% то есть остается не мало, с тем условием что еще не подключал библиотеку дальномера. Скажите как быть? НА дисплее хочу выводить эмоции (в роли рта будет, улыбки, грусть и т.п.) подскажите выход из ситуации. Может как то можно библиотеку уменьшить, оставить только команды для вывода картинок? Или сделать что то еще? Спасибо кто откликнется.
подскажите выход из ситуации.
Написать вывод на экран самому, без библиотеки. Или найти библиотеку, которая не держит в памяти огромный буфер.
Может как то можно библиотеку уменьшить
Может быть и можно, если умеете, только я не могу сказать насколько это трудно, Вы ведь даже не потрудились сказать что там за библиотека.
Дальномер vl53lox с адафруктовой либо + своя компактная либа олед в ранее 20КБ программной памяти. Так, к сведенью. Дальномер очень громоздкая. Есть либа дальномера ещё одна, вроде немного полегче. Еще на гите пару смотрел - мрак, то без калибровки, то без обработки ошибок.Проценты ваши , это ОЗУ? Наверно на буфер экрана 1КБ ушло. То решаемо в принципе. Картинки статические можна прямо из флеша в экран пихать, но надо уметь.
Посмотрел что за робот, там похоже УЗ дальномер, с ним проще.
Не назвал библиотеку так как их много и я не остановился на какой то именно. Я так понимаю что библиотека все символы держит в памяти ардуино? и поэтому занимает много места? А если убрать эти символы? Мне шрифты в принципе вообще не нужны, это уменьшит объем занимаемой памяти?
Вы, право, странный человек
Я так понимаю что библиотека все символы держит в памяти ардуино?
Я бы ещё понял, если бы Вы не знали, что
их много
и, открою страшный секрет, они разные и устроены по-разному.
Я так понимаю что библиотека все символы держит в памяти ардуино? и поэтому занимает много места? А если убрать эти символы?
Если Вы не пользуетесь шрифтами, их и без Вас из памяти уберут. Обычно проблема не в шрифтах, а в буфере экрана, но обсуждать это как-то глупо, пока речь идёт не о библиотеке, а о коне в вакууме.
В принципе, Вам нужна библиотека, которая не использует буфер экрана - они обычно непрожорливы.
Logic дело говорит: писать статичные картинки из флеша - наименее затратное для памяти средство. Да по большому счету можно и текст из флеша писать, просто правильно организовать доступ к фонту, не складируя его в буфер.
Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?
Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?
Вопрос из серии "Как починить машину?" или "Как сшить пальто?"
Logic дело говорит: писать статичные картинки из флеша - наименее затратное для памяти средство. Да по большому счету можно и текст из флеша писать, просто правильно организовать доступ к фонту, не складируя его в буфер.
И даже в одной популярной на форуме либке так фонт и выводится. И в нескольких не популярных тоже.
Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?
Могу, только боюсь, Вам опять не понравится. Я уже устал от того, что при любой попытке помочь новичку (а не сделать за него) в ответ получаешь хамский наезд: "мог бы просто написать две строчки кода, чем менторствовать, не хочешь помогать не пиши ничего". А я не хочу писать никаких строчек, т.к. считаю это бесполезным.
А сделать надо так:
1. Отложить в сторону проект робота
2. Создать пустой скетч, в нём определить картинку в виде массива в progmem
3. Просто вывести картинку на экран
и только когда это получится, возвращаться к роботу.
Кстати, первые два шага обязательны. Без них ничего не выйдет. Когда я не знаю как что-то сделать, я всегда пробую на крохотном коде, в котором нет НИЧЕГО, кроме того, что я в данный момент изучаю. А опыт программирования у меня - сорок лет. Если же Вы считаете, что сумеете сделать что-то новое в огромном коде, когда всё друг на друга влияет и непонятно из-за чего именно не работает, то флаг Вам в руки, я так не умею.
Как определять картинку массивом и как её выводить ... намекну чуть-чуть ...
Большое спасибо. Опыт у меня есть но маленький, программист любитель) В принципе я всегда пробую на пустом скетче делать маленькие программы, а потом уже внедрять. Если вывести картинку таким образом, ведь картинка выводится с помощью все тех же библиотек, а ведь библиотека будет съедать память (опять же как я понял) на хранение шрифтов которые входят в состав библиотеки? Получается нужно удалять из библиотеки все шрифты и команды которые к ним относятся? или я не так понимаю?
.... с помощью все тех же библиотек, а ведь библиотека будет съедать память (опять же как я понял) на хранение шрифтов которые входят в состав библиотеки? Получается нужно удалять из библиотеки все шрифты и команды которые к ним относятся? или я не так понимаю?
Ну, во-первых, я Вам уже сказал, что 1) плевать на шрифты, если Вы их не используете, они в код не попадут; 2) нужна библиотека без буфера (кстати, такая есть прямо здесь на форуме от andriano, если Вы не поленитесь воспользоваться поиском)
Ну, и кроме того, разве в моём тексте
А сделать надо так:
1. Отложить в сторону проект робота
2. Создать пустой скетч, в нём определить картинку в виде массива в progmem
3. Просто вывести картинку на экран
говорится. что это нужно делать "с помощью все тех же библиотек"? Вроде, нет.
Не надо ничего удалять. Всё объёмное храниться в постоянной памяти. Её много. Нужно сделать так, что бы при резервировании памяти и во время выполнения программы оперативная память тратилась по минимуму. Вам уже сказали, что для вывода на дисплей резервируют буферы. Они должны быть минимально необходимого размера. Строки выводить на печать с помощью макроса F().
Строки выводить на печать с помощью макроса F().
У нево шрифты все покрали, ни одного нету.
Поиском умею пользоваться, но везде примеры только о там как вывести только с помощью библиотек ( Не могу найти информацию о том как самому вывести данные на экран(
Подскажите где искать
Мне текст не нужен вообще, можете подсказать как организовать вывод картинок из флеша?
1) размещаете битмап картинки в PROGMEM
2) когда нужно, считываете побайтно содержимое битмапа из флеша, и суете его дисплей.
Как именно слать данные в Ваш дисплей зависит от контроллера дисплея, точнее, от организации адресации его графической памяти. На самом деле с этим бывает очень полезно разобраться, и тогда Вы , независимо от наличия и качества библиотек, сможете самостоятельно это все организовывать, как Вам удобнее.
Я по себе знаю, что иногда не знаешь как подступиться к проекту, и поэтому не можешь сформулировать точные вопросы. Соответственно точных ответов получить нет шансов. Поэтому начните хоть с чего-то, например с изучения контролера дисплея.
Или возьмите библиотеку к этому дисплею, напишите код, который должен чего-то выводить, а что не получается - описывайте тут. Шансы на успех значительно повысятся.
В даташите дисплея (его драйвера/контроллера). Даташит тоже не можете найти?
Но Вас и библиотека устроит, только без буфера. Я уже говорил, здесь на форуме от andriano. Ищите.
//Строки выводить на печать с помощью макроса F().
Тока не путайте его еще и с F(). Ему не строки и не на печать. Ему картинки и на экран. F() тут не при делах.
uch-inf смотри это http://arduino.ru/forum/proekty/asoled-kompaktnaya-biblioteka-dlya-oled-displeya-128kh64-s-kirillitsei-utf-8
Ну-ну, теперь, как порядочный человек, ты должен ему сопли подтирать пока он всё, что ему нужно не выведет куда-нибудь. Так бывает со всеми сердобольными выгуливателями лентяев. Успехов.
Спасибо, нашел уже. Буду пробовать. Благодарен всем кто помог!
Удавись, урка )))
Неее, дорогой, удавливаться будешь ты, когда на голову сядут :)))
Неее, дорогой, удавливаться будешь ты, когда на голову сядут :)))
Я не просил за меня все делать. Сделаю я сам, просто надо было узнать в каком направлении мне смотреть! А ты давай до свидания!
а как называется то что вы просили, если вы даже в поиске сами найти не можете?
Или "я все сделаю сам" означает "дайте мне готовый код, а скопирую я его сам?" :)
uch-inf, вообще-то я не с тобой разговаривал, так что сам давай в лес, на болото или куда там тебе надо. Меня и здесь неплохо кормят.