Отображение изображений и QR на OLED-дисплее с помощью Arduino простым способом.
Тут мы создадим проект с OLED для отображения различных изображений и QR-кодов с помощью Arduino. Используя это, вы можете вывести любое статическое изображение на экран. Сначала мы изменим изображение с помощью фоторедактора, а затем преобразуем его в шестнадцатеричный код, совместимый с Arduino.

Нам понадобится
1. Файл изображение QR-кода
3. OLED-дисплей
4. Батарея 9V
5. Экран печатной платы
Возможности
Тот же подход можно использовать для запуска видео на этом дисплее, о котором мы постараемся рассказать в ближайшее время. Разница в том, что изображение статично, а видео использует систему 25 кадров в секунду, которая может быть снижена до 20 в соответствии с совместимостью с Arduino.
QR-код

Код быстрого доступа представляет собой закодированную форму данных, недоступную для чтения человеком. Базовый QR-код состоит из таких основных компонентов, как:
1) Поля выравнивания: это указывает ориентацию, в которой данные организованы в QR. Это помогает сканеру быть точным независимо от направления и ориентации сканирования.
2) Размер кода, информация о версии QR, временные шаблоны и информация о формате.
Принципиальная схема и принцип работы:

OLED 0,96-дюймовый дисплей с разрешением 128x64. Он подключен к Arduino через интерфейс I2C, который использует 2 провода питания, 1 канал данных и 1 тактовый. SCL подключается к A5 Arduino, а SDA — к A4. Вся схема может питаться от батареи 9 В или адаптера 5 В
Все подключения очень просты, и никаких внешних компонентов не требуется. Основная идея заключается в том, чтобы получить код из файла изображения. Прежде всего, мы получим QR-код через определенную ссылку. Он загружается в формате PNG, затем сжимается файл QR-кода в BMP до 64x64 пикселей. Этот файл используется для получения кода Arduino в шестнадцатеричном формате, который будет освещать каждый пиксель соответственно.
Печатная плата

Плату можно сделать на PCBWAY и преобразовать файлы в печатную плату и загрузить файлы Gerber . Вы также можете скачать те же файлы отсюда.
Получение кода из файла изображения
1) Давайте создадим QR, вставьте ссылку и загрузите QR в формате PNG с этого сайта.

2) Сожмите файл PNG в BMP с помощью этого веб -инструмента и установите пиксели 64x64, а остальные оставьте такими же.
Изображение в CPP





3) Загрузите этот файл BMP в конвертер кода (изображение в CPP) тут, а затем скопируйте фрагмент кода. Оставьте размер 128x64 для ЖК-дисплея, яркость 128, масштабирование до исходного и от центра до горизонтали.
4) Теперь сохраните настройки кода в Arduino и сгенерируйте код.
5) Скопируйте код и удалите ненужные строки и поместите его в основную программу.
Основной файл кода
#define g 11 // назначаем имена пинов для удобства #include#include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Bitmap of Image const unsigned char My_QR [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x1c, 0x03, 0xc3, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x18, 0x01, 0x83, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x1c, 0x01, 0x83, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0xf0, 0x73, 0x19, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0xf0, 0x73, 0x19, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0x31, 0x80, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0x31, 0x80, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0xc1, 0x88, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0xc1, 0x8c, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0xc1, 0x8c, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0xc0, 0x03, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0xc0, 0x03, 0x19, 0xc0, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0x31, 0x8f, 0xf9, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0x31, 0x8f, 0xf9, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x1f, 0x31, 0x8f, 0xf8, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x18, 0xce, 0x73, 0x18, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x18, 0xce, 0x73, 0x18, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3e, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3e, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xc3, 0x9e, 0x3e, 0x33, 0x39, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0x83, 0x9f, 0x3e, 0x73, 0x19, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0x83, 0x9f, 0x3e, 0x73, 0x39, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xe0, 0xcf, 0xf0, 0xfe, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xe0, 0xcf, 0xf0, 0xfe, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0x3e, 0x7c, 0xe6, 0x31, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0x3e, 0x7c, 0xe6, 0x31, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x7f, 0xfc, 0xff, 0xf3, 0xf9, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x7f, 0xf8, 0xff, 0xf3, 0xf9, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x3f, 0xf8, 0xff, 0xf3, 0xf8, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x07, 0x0e, 0x7c, 0xf8, 0x3f, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x07, 0x0e, 0x7c, 0xf8, 0x3f, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0c, 0x60, 0xce, 0x1c, 0x07, 0xcf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0c, 0x60, 0xce, 0x0c, 0x07, 0xcf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0c, 0x60, 0xee, 0x1c, 0x07, 0xc7, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0x98, 0xff, 0xfc, 0xf9, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0x98, 0xff, 0xfc, 0xf9, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x83, 0xff, 0xf1, 0xf3, 0x1e, 0x30, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x83, 0xff, 0xf1, 0xf3, 0x1e, 0x30, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x8f, 0x87, 0xfe, 0x03, 0x00, 0x0c, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x8f, 0x87, 0xfe, 0x03, 0x00, 0x0e, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xcf, 0x87, 0xfe, 0x03, 0x00, 0x0e, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xfe, 0x0f, 0x1f, 0xce, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xfe, 0x1f, 0x1f, 0xce, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x1f, 0x39, 0xff, 0x19, 0xcf, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x1f, 0x31, 0xff, 0x19, 0xcf, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x1f, 0x3f, 0xc0, 0x1f, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9f, 0x3f, 0x80, 0x1f, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x9e, 0x3f, 0x80, 0x1f, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x98, 0x30, 0x70, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x98, 0x30, 0x70, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x98, 0x01, 0xf0, 0x00, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x98, 0x01, 0xf0, 0x01, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9c, 0x01, 0xe0, 0x01, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0x01, 0x83, 0xe7, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0x03, 0x9f, 0x01, 0x83, 0xe7, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x98, 0xff, 0xf0, 0xe0, 0x0c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0x98, 0xff, 0xf0, 0xe0, 0x0e, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x18, 0x3e, 0x7f, 0x1f, 0xf1, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x18, 0x3e, 0x7f, 0x1f, 0xf1, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x1c, 0x3e, 0x7f, 0xbf, 0xfb, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; void setup() { // initialize with the I2C addr 0x3C display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Clear the buffer. // Invert Display //display.invertDisplay(1); } void loop() { display.clearDisplay(); // Display bitmap display.drawBitmap(0, 0, My_QR , 128,64,1); display.display(); delay(50000); display.clearDisplay();}
Файл: my website.ino
Этот проект может быть интегрирован с кнопками, которые могут отображать различные QR в соответствии с функцией ввода. Но в этом коде между всеми файлами изображений есть 5-секундный таймер. Вы также можете использовать свое собственное изображение, но не забывайте о пикселях и размере.
Теги: #дисплеи