дисплей общается по SPI, разрешение 128 на 64 Подключен к arduino, использую adafruit библиотеки при использовании примера и при написании своего кода, дисплей выводит через каждую 2 линию, растягивая изображение, как это исправить? или хотя бы ткните носом где можно про это почитать
я не нашел инициализации, точнее, как я понял, он хранит настройки в энергонезависимой памяти но из за чего может быть не правильная отрисовка я не понял, но возможно чип настроен на матрицу 32 на 128
При старте программы, должна быть инициализация SSD1306. Один из вариантов INIT-а можете посмотреть на стр. 17-18 файла ER-OLED0.96-3_Manual.pdf (файл есть по ссылке в моём предыдущем посте).
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Слишком мало информации. Выложите ваш вариант Init-а (последовательность данных) и, желательно, схему подключения дисплея. Укажите по какому интерфейсу работаете.
подключаю к ардуино уно, по пинам думаю всё верно подключено, иначе бы не было изображения, проверял несколько раз. gnd-0 vdd-3.3v sck-10 sda-9 res-13 dc-11 cs-12 дисплей 0.96"White OLED 128X64 Ver.2 SPI возможно нужно что то перепаять на нём, но не могу разобраться в написанной схеме. фото выложу дисплея. Скетч заливаю стандартный <Adafruit_SSD1306.h>. Другие примеры тоже загружаются но пиксели так же через строчку. Вот хочу признаться про Init мало знаю что это такое, как ни странно вчера потратил 2 часа на в интернете нет никакой информации, как его тестить или вводить коды. Коды нашёл а куда их писать? толи в монитор порта, толи как скетч заливать? непонятно... пробовал так и этак, монитор порта высвечивает данные х и у и ещё что то, как скетч не получается залить.
Код:
/********************************************************************* This is an example for our Monochrome OLEDs based on SSD1306 drivers
Pick one up today in the adafruit shop! ------> http://www.adafruit.com/category/63_98
This example is for a 128x64 size display using SPI to communicate 4 or 5 pins are required to interface
Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, check license.txt for more information All text above, and the splash screen must be included in any redistribution *********************************************************************/
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!) display.begin(SSD1306_SWITCHCAPVCC); // init done
// Show image buffer on the display hardware. // Since the buffer is intialized with an Adafruit splashscreen // internally, this will display the splashscreen. display.display(); delay(2000);
// Clear the buffer. display.clearDisplay();
// draw a single pixel display.drawPixel(10, 10, WHITE); // Show the display buffer on the hardware. // NOTE: You _must_ call display after making any drawing commands // to make them visible on the display hardware! display.display(); delay(2000); display.clearDisplay();
В тексте вашей программы я не увидел последовательность данных для Init-а SSD1306. По неким скетчам я не могу ничего сказать, т.ч. проверьте, в первую очередь, в пошаговом режиме, какие данные вы шлёте в SSD1306 при Init-е и как работаете с линиями D/C и CS. Так же, проверьте настройки вашего порта SPI. Свериться можете с документацией от производителя (ссылки на pdf во втором посте). Если с настройкой порта и в Init-е всё правильно - ищите ошибку в подпрограмме вывода картинки. --- * Предположу, что нет ожидания (по факту) окончания передачи байта в SPI.
Проблема в Adafruit_SSD1306.h, там нужно найти правильный define(или не define), по дефолту стоит ssd1306 128 на 32 Нужно просто исправить это в самом header'е
Проблема в Adafruit_SSD1306.h, там нужно найти правильный define(или не define), по дефолту стоит ssd1306 128 на 32 Нужно просто исправить это в самом header'е
захожу в библиотеку, выбираю Adafruit_SSD1306.h, изменить, пытаюсь поменять на #define SSD1306_128_64 // #define SSD1306_128_32 но не могу сохранить. нет доступа.. как?
Добавлено after 4 minutes 17 seconds:
Albert_V писал(а):
В тексте вашей программы я не увидел последовательность данных для Init-а SSD1306. По неким скетчам я не могу ничего сказать, т.ч. проверьте, в первую очередь, в пошаговом режиме, какие данные вы шлёте в SSD1306 при Init-е и как работаете с линиями D/C и CS. Так же, проверьте настройки вашего порта SPI. Свериться можете с документацией от производителя (ссылки на pdf во втором посте). Если с настройкой порта и в Init-е всё правильно - ищите ошибку в подпрограмме вывода картинки. --- * Предположу, что нет ожидания (по факту) окончания передачи байта в SPI.
подскажите где я могу научиться проверять настройки порта в init-e? немогу найти уроки или примеры. То что нахожу, там только список кодов, а куда и как вводить ничего не пишут.. как буд то это все и так знают )
п.с. может мне перепоять резисторы на i2c? может так заработает?
vadimg, daaar, похоже, правильно указал на проблему и способ её решения. Что касается "проверять настройки порта в init-e" - документация на контроллеры не секретна. Да, читать pdf-ы долго, но надо. У вас есть три варианта: 1. Втупую скачиваете нечто из сети и прошиваете. 2. Самостоятельно пишите программу читая pdf-ы на всё, что закладываете на плату (или уже запаяно). 3. Скачав нечто из сети, пытаетесь понять что и почему именно так сделал автор программы/изделия. На мой взгляд, третий вариант наиболее трудоёмкий. Что касается "может мне перепоять резисторы на i2c?" - есть же документация на дисплей. Подключение должно быть по рекомендованной производителем схеме.
Покупал как 128х64. В примерах от Адского Фрукта написано - адрес 64-строчного - 0х3D, 32-строчного - 0х3С. Отзывается только на 0х3С. Прописал в скетче число строк (32). Все заработало, в том числе русификатор. Изображение полосило (то есть выводилось через строчку), считал это нормально, Продавец однако убедил, что это именно 64-строчный. Задал в скетче 64 строки, при том же адресе 0х3С и, о чудо, - получил 64-строчный экран. Полосить перестало, НО - исчез русскоязычный текст. Сейчас в программе идет вывод только на три строки текста в верху экрана. В нижней части экрана мигают кракозябры, хотя скетч туда ничего не посылает. Прошу подсказать куда копать. С уважением.
Не исполняется команда display.print(utf8rus("** ДАТА *-* ВРЕМЯ **")); или display.print(utf8rus("** DATE *--* TIME **")); как будто их совсем нет в программе.
Команда display.print("** DATE *-* TIME **"); работает нормально. Команда display.print("** ДАТА *-* ВРЕМЯ **"); тоже работает, но выводит естественно кракозябры
ПС. В 32-строчном режиме - все команды работают зашибись.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения