Adafruit_ssd1306_plus (только i2c)

Мадиас
Солнце 07 октября 2018 г., 21:43
Привет,
Когда я работаю над своим проектом MP3 -плееры, мне нужно было сделать некоторые адаптации к библиотеке ADAFRIT_SSD1306 (включенная в Core Rogers, адаптированную мне несколько лет назад).
Предупреждение: Эта библиотека была протестирована только с OLED 128x64 I2C без. Для SPI вам нужно адаптировать мои новые функции I2C!
Здесь некоторые изменения:
Полная скорость HW i2c снова (был изменен кем -то, но забыл вставить проволоку.SetClock (400000) после провода.начинать

инкапсулировал весь экранный буфер От частного до общественности. Это «стоит» только 1 кб (на дисплее 128x64), но теперь вы можете скопировать буфер во временный массив, сделать что -нибудь на экране и после этого, разместив состояние перед экраном снова. Итак, другими словами: вам не нужно позаботиться о том, что было на экране раньше. Сохраняет много строк кода

Удалить предварительно построенные логотипы Adafruit в буфере: Сохраняет флэш -память (около 1 кб)

Не только полное обновление экрана, но и страницы:
Хорошо, экран составляет всего 1024 байта, но с i2c это может быть много времени, поэтому я прочитал таблицу данных SSD1306 и признал, что экран также может быть обновлен на страницах (8 строк), поэтому у вас есть 8 страниц на 128x64 дисплей. Вот практический пример: void oled_invert_entry(byte page) { for (int z = 0; z < 128; z++) { display.buffer[z + page* 128] = ~display.buffer[z + page * 128]; // invert page } display.display(page, page ); }

Мадиас
Солнце 07 октября 2018 г. 22:00
И просто для удовольствия:
Супер быстрая прокрутка программного обеспечения одной линии с длинной строкой (в противоположность бесполезному прокрутке HW): void scrollText(String text, byte txtsize, byte page ) { display.setTextColor(0, 1); display.setTextSize(txtsize); display.setTextWrap(false); int x = display.width(); int minX = -6 * txtsize * text.length(); // 6 = 6 pixels/character * text size for (int y = 0; y < 6 * txtsize * text.length() + 6 * 20 * txtsize; y++) { //Full text length plus 20 additional character if (encflag || buttonflag) { return; display.setTextColor(1, 0); } display.fillRect(0, page * 8 , 128, 8 * txtsize, 1); display.setCursor(x, (0 + page * 8) ); display.print(text); display.display(page, page + txtsize - 1 ); delay(10); if (--x < minX) x = display.width(); } }

Zoomx
Пн, 8 октября 2018 г. 8:04
Молодец, я должен проверить вашу библиотеку однажды, я надеюсь в следующие дни. Мне очень нравится эти маленькие OLED.

Небольшая опечатка 12864 Дисплей Мне потребовалось некоторое время, чтобы понять, что у него отсутствовал x. Утром в понедельник я взял свой эспрессо, но кажется, мне нужно больше!

Хейсан
Пн, 8 октября 2018 г. 8:41
Обратите внимание, что лицензия Adafruit требует сохранения экрана Splash.

Мадиас
Пн, 8 октября 2018 г. 10:08
[Хейсан - Пн, 8 октября 2018 г. 8:41] - Обратите внимание, что лицензия Adafruit требует сохранения экрана Splash.
Что заставляет вас думать, что?
https: // github.com/adafruit/adafruit_ss ... iCense.текст
1. Перераспределение исходного кода должно сохранить вышеуказанное авторское право
Обратите внимание, этот список условий и следующее отказ от ответственности.
лицензия.TXT включен. 2. Перераспределение в двоичной форме должно воспроизводить вышеуказанное авторское право
обратите внимание, этот список условий и следующее отказ от ответственности в
Документация и/или другие материалы, предоставленные с распределением.
см. 1) 3. Ни имя владельцев авторских прав, ни
Названия его участников могут использоваться для поддержки или продвижения продуктов
получен из этого программного обеспечения без конкретного предварительного письменного разрешения.
бла.

Мадиас
Пн, 8 октября 2018 г. 10:17 утра
[Zoomx - Пн, 8 октября 2018 г. 8:04] - Молодец, я должен проверить вашу библиотеку однажды, я надеюсь в следующие дни. Мне очень нравится эти маленькие OLED.

Небольшая опечатка 12864 Дисплей Мне потребовалось некоторое время, чтобы понять, что у него отсутствовал x. Утром в понедельник я взял свой эспрессо, но кажется, мне нужно больше!
Исправлено! Теперь IAMX :)

Хейсан
Пн, 8 октября 2018 г. 10:26
https: // github.com/adafruit/adafruit_ss ... PP#L14-L16
Написано Limor Fried/Ladyada для Adafruit Industries.
Лицензия BSD, проверка лицензии.TXT для получения дополнительной информации
Весь текст выше, а экран брызг ниже должен быть включен в любое перераспределение

Мадиас
Пн, 8 октября 2018 г. 11:06
Хороший улов, Хейсан!
Но это полностью противоречит основному текстовому файлу лицензии здесь: https: // github.com/adafruit/adafruit_ss ... iCense.текст
Я открыл проблему на GitHub, потому что это бессмысленное вздутие живота флэш -память с примерно 1 кб с глупым логотипом.

Мадиас
Пн, 8 октября 2018 г. 11:11
Хорошо, нам не нужно сохранять это (лучше: мы должны «держать» это, но прокомментируйте это....), читать здесь:
https: // github.com/adafruit/adafruit_ssd1306/выпуски/117

Итак, ребята: Пожалуйста, после загрузки включите оригинальный файл логотипа и прокомментируйте его....

Хейсан
Пн, 8 октября 2018 г., 11:21
[Мадиас - Пн, 8 октября 2018 г. 11:11] - Хорошо, нам не нужно сохранять это, читать здесь:
https: // github.com/adafruit/adafruit_ssd1306/выпуски/117
Да, это была моя просьба. Не на 100% уверен, является ли это одноразовым одобрением или общим одобрением для смены условий лицензии...

Лично я действительно хочу очистить место всех этих драйверов, с надлежащей абстракцией и более чистыми лицензиями - но у меня просто нет времени.

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

Mrburnette
Пн, 8 октября 2018 г. 12:21
[Хейсан - Пн, 8 октября 2018 г. 11:21] - ...
Да, это была моя просьба. Не на 100% уверен, является ли это одноразовым одобрением или общим одобрением для смены условий лицензии...

Лично я действительно хочу Чистая комната все эти водители, с надлежащей абстракцией и более чистыми лицензиями - но у меня просто нет времени.

В качестве примечания, функции пикселей с переключением битов быстрее на STM32, чем в таблицах поиска, поэтому, если вы вернете их, вы можете получить немного больше производительности.
Трата времени, ИМО. Вот почему многие (большинство) коммерческих усилий избегают (отклонить, избегать, наказать сотрудников до завершения) за использование кода с открытым исходным кодом. Я помню, как моя старая компания «настаивала» на том, что автор свободного программного обеспечения принимает 50 тысяч долларов и подпишет лицензию правого использования. У законных была такая же проблема с Linux OS, и потребовались годы, чтобы проработать положения о возмещении... Нет ничего "бесплатно".

В случае использования хобби (не сдача), просто сделайте то, что хотите, с модификациями LIB. Проблема заключается в переоценке для загрузки и публикации более чем фрагмента. #ifdef/#logic ifndef добавлена ​​в повторные либера.

Луча

Мадиас
Пн, 8 октября 2018 г., 21:43
Вернуться к теме:
Хейсан: У вас есть примеры кода на GitHub, я ничего от вас не нашел.
Основная проблема с I2C OLED - это....I2c, лучше назвать библиотеку проводов. В качестве «функции совместимости» буфер отправки составляет всего 32 КБ. Таким образом, вы не можете отправить весь дисплей -буфер сразу. Но достаточно грустно, вы не можете использовать «Полный» 32 КБ: // I2C for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { // send a bunch of data in one xmission Wire.beginTransmission(_i2caddr); WIRE_WRITE(0x40); for (uint8_t x=0; x<16; x++) { WIRE_WRITE(buffer[i]); i++; } i--; Wire.endTransmission(); }

Mrburnette
Пн, 8 октября 2018 г. 22:39
[Мадиас - Пн, 8 октября 2018 г. 9:43 вечера] - ...Какая библиотека использует для вашего Nokia5110? *насмешка*
....
http: // Playground.Ардуино.cc/code/pcd8544

Луча

Zoomx
Ср 10 октября 2018 г. 12:24
[Мадиас - Пн, 8 октября 2018 г. 9:43 вечера] - Рэй: Есть гораздо лучшие библиотеки SSD1306, как Adafruit One,
Если мне нужны только символы ASCII, я использую этот
Текст только библиотека Arduino для SSD1306 OLED -дисплеев
https: // github.com/greiman/ssd1306ascii
у этого очень маленькое использование вспышки и оперативной памяти.

Mrburnette
Ср 10 октября 2018 г. 13:55
«Лучше» - относительное слово... При подходе к дизайну следует выбрать LIBS на основе потребностей... Большие, толстые либера & Шрам.

Я также «инкапсулирует» либера. Например, функция Nokia LIB «ясно» не сбросила x, y. Редактирование Clear, чтобы включить x = 0, y = 0 Сохранить несколько строк исходного кода. Я также внес несколько изменений в то, как Ladyada обрабатывала свой 2-линический GPS-буфер.

Я просто не использую библиотеки, которые не понимаю... Использование библиотеки - удобство, но никогда не должно быть костылем.

Луча