Страница 1 из 1

Tinny 85 и oled ssd1306

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

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

Добавлено: 02.05.2021{, 14:30}
aidar_i
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));
Примерно так. посмотрите мои блоки для дисплеев.
У Вас кириллица еще может и не работать.

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

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

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

Добавлено: 02.05.2021{, 14:52}
aidar_i
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);
Успехов!
Да, нужно убрать.

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

Добавлено: 02.05.2021{, 16:34}
golloper
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
(3.19 МБ) 64 скачивания
Вроде как пульсометр, но не суть.

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

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

Tinny 85 и oled ssd1306

Добавлено: 02.05.2021{, 22:42}
aidar_i
удалил

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

Добавлено: 03.05.2021{, 12:30}
golloper
Спасибо за участие но вывода на экран нет с вашего блока

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

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

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

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

Tinny 85 и oled ssd1306

Добавлено: 06.05.2021{, 13:28}
golloper
Прошу прощения что так притормозил с ответом.
Пока всё на том же уровне. Блок от viewtopic.php?t=6485&start=180#p103231 к сожалению показывает тёмный экран

Tinny 85 и oled ssd1306

Добавлено: 08.05.2021{, 17:47}
aidar_i
удалил

Tinny 85 и oled ssd1306

Добавлено: 11.05.2021{, 22:14}
golloper
Большое спасибо !!!

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

Tinny 85 и oled ssd1306

Добавлено: 13.05.2021{, 13:04}
golloper
Что то не так с этим блоком. Почему то нельзя двигать текст по оси Y. Как будто всего одна строчка. :smile37:

Tinny 85 и oled ssd1306

Добавлено: 13.05.2021{, 20:54}
aidar_i
У меня также.
В библиотеке стоит
#define SCREEN_128X32. На этом дисплее автор и работает.
Простая замена на
#define SCREEN_128X64 не даёт положительного результата. Я думаю, нужно в библе копаться.
Ссылка есть на оригинальную статью?

Tinny 85 и oled ssd1306

Добавлено: 14.05.2021{, 07:45}
golloper
Думаю не в этом дело. Я закоментил ненужные части кода в оригинальном скетче которые не давали запуститься без датчика пульса и всё прекрасно отображается на 128х64. Может иде библиотеки не оттуда хавает при компиляции,там же ещё font.h и tinyi2cmaster.h.
Попробовать всё в оду папку сложить вместе с проектом flprog

Отправлено спустя 52 минуты 22 секунды:
aidar_i писал(а):
13.05.2021{, 20:54}
Ссылка есть на оригинальную статью?
https://github.com/jeffmer/tinyPulsePPG

Отправлено спустя 2 минуты 36 секунд:
https://create.arduino.cc/projecthub/je ... aph-e3f907

Tinny 85 и oled ssd1306

Добавлено: 14.05.2021{, 17:16}
aidar_i
golloper писал(а):
14.05.2021{, 08:40}
Я закоментил ненужные части кода в оригинальном скетче которые не давали запуститься без датчика пульса и всё прекрасно отображается на 128х64
Какие части?
golloper писал(а):
14.05.2021{, 08:40}
Может иде библиотеки не оттуда хавает при компиляции,там же ещё font.h и tinyi2cmaster.h.
Оттуда хавает.

Tinny 85 и oled ssd1306

Добавлено: 14.05.2021{, 17:28}
golloper
aidar_i писал(а):
14.05.2021{, 17:16}
Какие части?
Ну вот ,оригинальный скетч. он без датчика пульса не запускался. Я это место закоментил и прога пошла дальше и нарисовала всё на дисплее как на картинках и видео.
tinypulseppg.ino
(9.32 КБ) 48 скачиваний
Отправлено спустя 3 часа 33 минуты 6 секунд:
Заработало.

Отправлено спустя 24 минуты 41 секунду:
Tiny_drawString_(Code_-_Professional).ubi
(144.64 КБ) 60 скачиваний

Tinny 85 и oled ssd1306

Добавлено: 14.05.2021{, 23:04}
aidar_i
То же в старом редакторе блоков
Tinyoled2.flp
(396.56 КБ) 59 скачиваний