Сколько читаемого текста может поместиться в ATTINY85? Возможность прокрутки буклета на 0,91-дюймовом OLED-дисплее

Я новичок, поэтому обсуждал с Chatgpt возможности микроконтроллера Attiny85. Но ИИ будет часто галлюцинировать и давать лишь частично правильные ответы (потому что он полагается на закономерности и знания из своих обучающих данных или что-то в этом роде). Поэтому я пришел сюда, чтобы попросить совета и информации по следующим вопросам:

  1. Какой объем читаемого текста может вместить Attiny85 с учетом таких переменных, как программы, библиотеки и шрифты?
  2. Можно ли создать мини-программу для чтения текста, используя Attiny85 и 0,91-дюймовый OLED-дисплей, где текст можно прокручивать и читать как буклет?

Я понимаю, что Attiny85 имеет 8 КБ флэш-памяти, но я не уверен насчет фактической емкости для хранения и отображения текста, особенно учитывая потенциальное влияние сжатия кода.

Мы будем очень признательны за любые советы, опыт или предложения по оптимизации использования Attiny85 и OLED-дисплея для этой цели.

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

, 👍0

Обсуждение

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

Если вы сохраните простой ASCII (а не какой-то многобайтовый формат), один символ будет равен ровно одному байту. Какая часть 8 КБ доступна помимо вашей программы, зависит от того, как вы ее пишете. Никто не может вам этого сказать, поскольку вы еще этого не написали. И когда вы его написали, вы можете проверить себя, просто скомпилировав его (IDE Arduino сообщит вам размер программы). Хотя управление OLED-дисплеем, вероятно, требует довольно много места. И у вас, вероятно, закончатся булавки. Есть ли причина, по которой вы пытаетесь сделать это с таким маленьким контроллером (с точки зрения ресурсов, а не физического размера)?, @chrisl

Хммм, не думаю, что смогу вам сказать, почему я пытаюсь сделать это устройство как можно меньше... Ну, вот подсказка: я никогда не заканчивал среднюю школу., @Moises


2 ответа


0

AtTiny85 имеет 8 КБ программной памяти, в которой вы можете хранить строки. Чем больше данных вы храните, тем меньше места у вас остается для программного кода, и наоборот.

За немного большую цену вы можете использовать Atmega328P с 32 КБ программной памяти, что дает вам несколько больше возможностей для хранения данных.

Для какого-либо устройства для чтения текста вы можете рассмотреть возможность использования внешнего диска (например, карты micro-SD), который можно легко подключить с помощью небольшого количества дополнительного оборудования. Аппаратное обеспечение может представлять собой пару преобразователей уровня напряжения, если вы собираетесь использовать процессор при напряжении 5 В, а не 3,3 В.

Код для взаимодействия с SD-картой может быть слишком большим, чтобы поместиться в 8 КБ памяти (я в этом не уверен), но определенно уместится в 32 КБ.

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

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

Для какого-то «буклета»; Я считаю внешний диск наиболее практичным решением. Вот как он выглядит с преобразователем уровня напряжения, подключенным к моему Uno:

Карта Micro-SD

,

1

Я возьму SWAG, я бы использовал подход, заключающийся в добавлении внешней памяти, такой как I2C FRAM. Это недорого и прекрасно работает с шиной I2C. Я использую устройства 32K x 8. Вы можете подключить 8 из них. FRAM также можно получить через SPI. Я предположил, что вы используете I2C для дисплея, поэтому дополнительные контакты процессора не потребуются.

,

Как текст попадает в FRAM?, @Nick Gammon

Записав это там, это можно сделать поэтапно, поскольку FRAM является энергонезависимым. Для этого я написал специальную программу. Я использую Mega для программирования, так как в нем много флэш-памяти, которую я просто переношу в FRAM. Я также сделал то же самое с UNO и Nanos, они работают нормально. Первоначально я использовал Nano и множество операторов #ifdef. Затем каждый раз я выбирал разные таблицы и программировал их во FLASH. Адреса таблиц были заранее определены для FRAM. После загрузки FRAM я работал над своей программой, используя больше флэш-памяти и оперативной памяти в зависимости от того, где находились сообщения., @Gil