Tinny 85 и oled ssd1306

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

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-42-12.png (2.14 КБ) 667 просмотров
то получаем в коде вот такую штуку, на которую ругается компилятор
2021-05-02_10-43-08.png
2021-05-02_10-43-08.png (1.19 КБ) 667 просмотров
Проблема решается если вход поменять на параметр блока
2021-05-02_10-48-58.png
2021-05-02_10-48-58.png (6.81 КБ) 667 просмотров
и код приобретает читаемый для библиотеки вид
2021-05-02_10-50-28.png
2021-05-02_10-50-28.png (1.04 КБ) 667 просмотров
но тогда теряется возможность отображения изменяющегося значения строки.
Памажите люди добрые советом :smile37:

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

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

#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
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: 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
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#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
Рядовой
Сообщения: 39
Зарегистрирован: 28.09.2018{, 17:16}
Репутация: 7
Имя: Дмитрий

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

#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
(3.19 МБ) 58 скачиваний
Вроде как пульсометр, но не суть.

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

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

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

Tinny 85 и oled ssd1306

#6

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

удалил
Последний раз редактировалось aidar_i 14.05.2021{, 23:05}, всего редактировалось 2 раза.

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

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

#7

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

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

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

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

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

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

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

Tinny 85 и oled ssd1306

#8

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

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

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

Tinny 85 и oled ssd1306

#9

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

удалил
Последний раз редактировалось aidar_i 14.05.2021{, 23:05}, всего редактировалось 4 раза.

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

Tinny 85 и oled ssd1306

#10

Сообщение golloper » 11.05.2021{, 22:14}

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

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

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

Tinny 85 и oled ssd1306

#11

Сообщение golloper » 13.05.2021{, 13:04}

Что то не так с этим блоком. Почему то нельзя двигать текст по оси Y. Как будто всего одна строчка. :smile37:

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

Tinny 85 и oled ssd1306

#12

Сообщение aidar_i » 13.05.2021{, 20:54}

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

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

Tinny 85 и oled ssd1306

#13

Сообщение golloper » 14.05.2021{, 07:45}

Думаю не в этом дело. Я закоментил ненужные части кода в оригинальном скетче которые не давали запуститься без датчика пульса и всё прекрасно отображается на 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

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

Tinny 85 и oled ssd1306

#14

Сообщение aidar_i » 14.05.2021{, 17:16}

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

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

Tinny 85 и oled ssd1306

#15

Сообщение golloper » 14.05.2021{, 17:28}

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

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

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

Tinny 85 и oled ssd1306

#16

Сообщение aidar_i » 14.05.2021{, 23:04}

То же в старом редакторе блоков
Tinyoled2.flp
(396.56 КБ) 56 скачиваний

Ответить

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