дисплей общается по 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-строчном режиме - все команды работают зашибись.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения