Tinny 85 и oled ssd1306

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
golloper
Рядовой
Сообщения: 24
Зарегистрирован: 28.09.2018{, 17:16}
Репутация: 5
Имя: Дмитрий

Tinny 85 и oled ssd1306

#1

Сообщение golloper » 02.05.2021{, 10:55}

Ай нид хелп.
Делаю блок для ссд1306 под тиньку85 . Долго искал что бы минимум памяти кушала. Нашёл проект где вся библа занимает 26 %. что вполне устраивает. пытаюсь оттуда своять свой блок и наткнулся я на следующее.
СпойлерПоказать
Вывод текста осуществляется вот так oled.drawStr(10,0,F("тут текст"),1);
если делать через вход string блока
2021-05-02_10-42-12.png
то получаем в коде вот такую штуку, на которую ругается компилятор
2021-05-02_10-43-08.png
Проблема решается если вход поменять на параметр блока
2021-05-02_10-48-58.png
и код приобретает читаемый для библиотеки вид
2021-05-02_10-50-28.png
но тогда теряется возможность отображения изменяющегося значения строки.
Памажите люди добрые советом :smile37:
Для скачивания вложений Вы должны быть зарегистрированы.

aidar_i
Полковник
Сообщения: 1839
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 237
Откуда: Уфа
Имя: Айдар
Контактная информация:

Новый редактор для создания пользовательских блоков.

#2

Сообщение aidar_i » 02.05.2021{, 14:30}

golloper писал(а):
02.05.2021{, 10:55}
Ай нид хелп.
Памажите люди добрые советом :smile37:
Памажем!
Преобразуйте String в char !

В declare: const char text[50]; 50 - длина текста в символах
В loop:
txt.toCharArray(text, txt.length()+1);
oled.drawStr((1),(1),F(text),(1));
Примерно так. посмотрите мои блоки для дисплеев.
У Вас кириллица еще может и не работать.

Labu559
Лейтенант
Сообщения: 319
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 81
Откуда: Bukovyna
Имя: Василий

Новый редактор для создания пользовательских блоков.

#3

Сообщение Labu559 » 02.05.2021{, 14:46}

golloper писал(а):
02.05.2021{, 10:55}
oled.drawStr(10,0,F("тут текст"),1);
Буквочка F(" ") перед строкой обозначает применение макроса, с помощью которого указанная строка размещается в памяти программ (Flash) для экономии оперативной памяти (SRAM), т.е. имеет постоянный адрес и соответственно размер. Потому это должна быть константа и соответственно не может быть переменная (Параметр Пользователя- это #define, заранее определённая константа). Если нужна строка как переменная,- попробуйте убрать макрос F(), т.е. записать так: oled.drawStr(10,0,"тут текст",1);
Сам проверить не могу, биб-ку Вы не указали, набросок блока не выложили. :)
Успехов!

aidar_i
Полковник
Сообщения: 1839
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 237
Откуда: Уфа
Имя: Айдар
Контактная информация:

Новый редактор для создания пользовательских блоков.

#4

Сообщение aidar_i » 02.05.2021{, 14:52}

Labu559 писал(а):
02.05.2021{, 14:46}
golloper писал(а):
02.05.2021{, 10:55}
oled.drawStr(10,0,F("тут текст"),1);
Буквочка F(" ") перед строкой обозначает применение макроса, с помощью которого указанная строка размещается в памяти программ (Flash) для экономии оперативной памяти (SRAM), т.е. имеет постоянный адрес и соответственно размер. Потому это должна быть константа и соответственно не может быть переменная (Параметр Пользователя- это #define, заранее определённая константа). Если нужна строка как переменная,- попробуйте убрать макрос F(), т.е. записать так: oled.drawStr(10,0,"тут текст",1);
Успехов!
Да, нужно убрать.

golloper
Рядовой
Сообщения: 24
Зарегистрирован: 28.09.2018{, 17:16}
Репутация: 5
Имя: Дмитрий

Новый редактор для создания пользовательских блоков.

#5

Сообщение golloper » 02.05.2021{, 16:34}

Labu559 писал(а):
02.05.2021{, 14:46}
golloper писал(а):
02.05.2021{, 10:55}
oled.drawStr(10,0,F("тут текст"),1);
Буквочка F(" ") перед строкой обозначает применение макроса, с помощью которого указанная строка размещается в памяти программ (Flash) для экономии оперативной памяти (SRAM), т.е. имеет постоянный адрес и соответственно размер. Потому это должна быть константа и соответственно не может быть переменная (Параметр Пользователя- это #define, заранее определённая константа). Если нужна строка как переменная,- попробуйте убрать макрос F(), т.е. записать так: oled.drawStr(10,0,"тут текст",1);
Сам проверить не могу, биб-ку Вы не указали, набросок блока не выложили. :)
Успехов!
Извинтиляйте. Вот сам проект с которого хочу вынуть кусок для ssd
jeffmer-tinyPulsePPG-f6da117.zip
Вроде как пульсометр, но не суть.

Отправлено спустя 7 минут 57 секунд:
А, и вот что удалось вынуть
Oled_mini_(Code_-_Professional).ubi
Отправлено спустя 7 минут 53 секунды:
Без F прокатило

Отправлено спустя 2 минуты 24 секунды:
Но опять же , только через параметры а не с входа
2021-05-02_16-52-16.png
Отправлено спустя 1 минуту 15 секунд:
Принципе мне и так сойдёт, хотелось бы конечно универсальности...
Для скачивания вложений Вы должны быть зарегистрированы.

aidar_i
Полковник
Сообщения: 1839
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 237
Откуда: Уфа
Имя: Айдар
Контактная информация:

Новый редактор для создания пользовательских блоков.

#6

Сообщение aidar_i » 02.05.2021{, 22:42}

Tinyoled.flp
Блока main не нужно.
Для скачивания вложений Вы должны быть зарегистрированы.

golloper
Рядовой
Сообщения: 24
Зарегистрирован: 28.09.2018{, 17:16}
Репутация: 5
Имя: Дмитрий

Новый редактор для создания пользовательских блоков.

#7

Сообщение golloper » 03.05.2021{, 12:30}

Спасибо за участие но вывода на экран нет с вашего блока

Отправлено спустя 2 минуты 53 секунды:
А блок майн задумывался для расширения блока и вывода данных отличных от стринг

Отправлено спустя 25 секунд:
Пока это только мечты

Отправлено спустя 2 минуты 39 секунд:
golloper писал(а):
03.05.2021{, 12:33}
Спасибо за участие но вывода на экран нет с вашего блока
Наверно текст должен быть в скобках ""

Отправлено спустя 1 минуту 2 секунды:
вернее в кавычках

golloper
Рядовой
Сообщения: 24
Зарегистрирован: 28.09.2018{, 17:16}
Репутация: 5
Имя: Дмитрий

Tinny 85 и oled ssd1306

#8

Сообщение golloper » 06.05.2021{, 13:28}

Прошу прощения что так притормозил с ответом.
Пока всё на том же уровне. Блок от viewtopic.php?t=6485&start=180#p103231 к сожалению показывает тёмный экран

aidar_i
Полковник
Сообщения: 1839
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 237
Откуда: Уфа
Имя: Айдар
Контактная информация:

Tinny 85 и oled ssd1306

#9

Сообщение aidar_i » 08.05.2021{, 17:47}

Tinyoled1.flp
Спортивный интерес преобладал: купил ATtiny85 для проверки и добил блок! Работает!
Для дисплея 128х32, 64.
В Протеус не запустился I2C.
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось aidar_i 12.05.2021{, 08:00}, всего редактировалось 1 раз.

golloper
Рядовой
Сообщения: 24
Зарегистрирован: 28.09.2018{, 17:16}
Репутация: 5
Имя: Дмитрий

Tinny 85 и oled ssd1306

#10

Сообщение golloper » Вчера{, 22:14}

Большое спасибо !!!

Отправлено спустя 48 секунд:
На 128х 64 работает очень шустро

Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость