SSD1306 показывает статику, когда я пытаюсь отобразить изображение XBM

oled ssd1306 u8glib

Это моя схема.

Это и есть код.

    #include "U8glib.h" // include the universal graphcs library
     
    U8GLIB_SSD1306_128X64 u8g(12, 11, 10, 9, 8);  // initialise a u8g display object
     
    const uint8_t flux_xbm[] PROGMEM = {
       0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x56, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xEF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x69, 0x92, 
  0x6E, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xC1, 0xFF, 0xFE, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x80, 0x01, 0xF5, 0x7E, 0xFF, 0xFF, 0xFF, 0xFB, 0x00, 0xC2, 
  0x3F, 0x21, 0xF4, 0xFF, 0xFF, 0xFF, 0x36, 0x6C, 0xBE, 0x7F, 0xFC, 0xFF, 
  0xFF, 0xFF, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x86, 0x61, 
  0xDE, 0x4F, 0xFE, 0xFF, 0xFF, 0xFB, 0x64, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x20, 0x04, 0xFC, 0x63, 0xFA, 0xFF, 0xFF, 0xFD, 0x24, 0xCD, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x95, 0xA9, 0x7F, 0x08, 0xFC, 0xFF, 
  0xFF, 0xF7, 0x27, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 
  0x04, 0x50, 0xFC, 0xFF, 0xFF, 0xFF, 0xD9, 0xC9, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x10, 0x01, 0x21, 0x90, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x02, 0x84, 0x08, 0x02, 0xFC, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x04, 0x00, 
  0x00, 0x28, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 
  0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 
  0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x00, 0x00, 0x80, 0x07, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xC0, 0x05, 0xF8, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 
  0xB8, 0x0F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x00, 0xE0, 0xFB, 0x1F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xBC, 
  0xFE, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x00, 0xDF, 0x49, 0x1F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x4B, 0xA8, 0x1F, 0xF8, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0x00, 
  0x40, 0x7A, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x80, 0x00, 0xA0, 0xFD, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x40, 0x00, 0x00, 0x7A, 0xFC, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 
  0xA2, 0xF5, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x70, 0x00, 0x00, 0xF9, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x30, 0x00, 0xA0, 0xFC, 0xFD, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 
  0x00, 0xE2, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x10, 0x00, 0x00, 0xD8, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xD2, 0xB7, 0xFB, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xD0, 0x02, 
  0x60, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x08, 0x35, 0xF4, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0x08, 0xDC, 0xD4, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0x36, 
  0x16, 0x9F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x1F, 0x42, 0xEC, 0xB7, 0xAB, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xA0, 0x67, 0xAB, 0xBC, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0x66, 
  0xB4, 0x6A, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x34, 0x49, 0x06, 0x95, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x0B, 0x20, 0x5C, 0x0A, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x10, 
  0x5C, 0xE4, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0x1E, 0x08, 0xB8, 0xD5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x15, 0x64, 0x29, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x0E, 0x10, 
  0xAA, 0x91, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x7F, 0x9E, 0x00, 0xB4, 0x6C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x0F, 0x12, 0xED, 0x6A, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x80, 
  0x7E, 0x99, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x9F, 0x5F, 0x14, 0xBA, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x5F, 0x41, 0xE4, 0x69, 0xFE, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBF, 0x05, 
  0xAA, 0x7B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0x3F, 0x7F, 0xD8, 0xF9, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0x2A, 0xFA, 0xA8, 0xFD, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x4D, 
  0x6A, 0xB7, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0x27, 0x90, 0xDA, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFE, 0xF8, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 
  0x6A, 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xF7, 0x7F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x43, 0xD8, 0x7D, 0xFF, 0xDF, 
  0xBF, 0x9B, 0xEF, 0xFF, 0x5F, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xBF, 0x43, 
  0x88, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFE, 0xFB, 0xFF, 0xFF, 0xFF, 
  0xFF, 0xFF, 0xEF, 0x41, 0xA8, 0xFF, 0x5D, 0x77, 0x9F, 0xBF, 0xE6, 0x77, 
  0xFF, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xF7, 0xEF, 0xFE, 0xEF, 0xFF, 0xFF, 
  0xFF, 0xDB, 0xBF, 0xF7
    };
     
    void setup(void) {
    }
     
    void loop(void) {
      u8g.drawXBMP( 0, 0, 128, 64, flux_xbm); // send the xbm image to the display, specifying position and size
      while (1==1) {} // set the loop to only run once
    }

Образ, который он держит в XBM, таков.

Выход таков. Что я делаю не так? Edit 1 - Как сообщает пользователь timemage. Массив xbm был 64x128 вместо 128x64 Я изменил изображение добавил более простое но это все равно не решает проблему,

, 👍1

Обсуждение

Изображение, которое вы включили в вопрос, имеет формат JPEG, цветной, разрешение 1920х1080 пикселей и размер 155 КБ. Как это должно работать с Arduino 32 КБ и монохромным дисплеем 128x64? Как вы преобразовали изображение в формат, который вы ввели в свой код? Работает ли это с гораздо более простыми и / или гораздо меньшими изображениями?, @StarCat

@StarCat Если вы видите размер изображения, которое я ввел в код в массиве типа uint8_t с именем flux_xbm, это будет 164x64. Я использовал эти два онлайн-приложения https://image.online-convert.com/convert-to-bmp для преобразования в растровое изображение в оттенках серого 128x64, а затем используется https://www.online-utility.org/image/convert/to/XBM для преобразования в шестнадцатеричный двумерный массив., @Shridhar Sharma

Вы пробовали этот инструмент преобразования с более простыми монохромными изображениями? Можете ли вы отображать другие объекты, кроме растровых изображений XBM, т.Е. Правильно ли инициализирован дисплей и можете ли вы управлять им из своего кода, используя U8glib?, @StarCat

@StarCat Да. Я использовал один и тот же OLED-дисплей для одновременного отображения трех сигналов, полученных от 3 разных датчиков, и теперь проблема заключается в индивидуальном отображении изображения. Я подумывал о добавлении меню, подключенного к поворотному энкодеру или чему-то в этом роде, чтобы выбрать, какую форму сигнала вы хотите видеть, и добавить изображение или что-то в этом роде во время калибровки оборудования., @Shridhar Sharma

@StarCat но на данный момент. На дисплее плюс это изображение к OLED - дисплею не подключен датчик , и это код , который я использовал ., @Shridhar Sharma

Я не уверен точно, что бы я сделал с этой информацией, но: является ли конфигурация пикселей, которую вы получаете, одинаковой каждый раз, когда пытаетесь отобразить изображение, или точечный рисунок стабилен? Что произойдет, если вы попытаетесь нарисовать сплошной прямоугольник поверх этой статики, успешно ли это делается?, @timemage


1 ответ


1

ПРИМЕЧАНИЕ: Это относится к проблеме в первоначальной проводке. С тех пор этот вопрос был отредактирован. Это может быть удалено позже.


Одна из проблем, возможно, проблема в том, что ваше изображение выглядит 64x128, а не 128x64:

rendered XBM

Тем не менее, я не совсем уверен, почему экран показывает именно то, что он делает.

Когда вы получите это изображение в правильном разрешении, я ожидаю, что вы будете немного не впечатлены результатом.

,

спасибо вам за то, что указали на это. Это была ошибка с моей стороны. Я исправил это. Но все равно результат тот же статический, который я вижу. Должен ли я изменить шестнадцатеричный массив CBM в вопросе? или что это за процедура?, @Shridhar Sharma

проблема до сих пор не решена. Я попробовал другие образы. Все, начиная с собственных конструкторов драйверов, работает, только эти изображения трудно показать., @Shridhar Sharma

Я неправильно истолковал ваш первый комментарий выше. Я не * знаю * наверняка, какова правильная процедура, но я бы сказал, поскольку размеры и искажения изображения не являются вашей * основной * проблемой, тогда да, вам имеет смысл обновить свой вопрос с помощью исправленного массива изображений. Возможно, вы захотите добавить примечание, в котором просто говорится, что предыдущее редактирование содержало неверные данные изображения, но это не было основной проблемой. Я могу сделать аналогичное замечание в этом ответе или удалить его. Мне нужно будет подумать об этом., @timemage