Как приклеить шлейф к дисплею nokia 5110
Перейти к содержимому

Как приклеить шлейф к дисплею nokia 5110

  • автор:

Подключение дисплея от nokia 5110/3310 к AVR

Итак, наконец-то повезло приобрести телефон nokia 5110. В телефоне много разных вкусностей, но нас интересует дисплей.

:warning: Если вы используете AVR-GCC / WinAvr, то вам нужна эта библиотека. Настоятельно рекомендую изучить эту статью.

Телефон, собственно|300

Разбираем телефон и добираемся до дисплея.

|300

Дисплей с печаткой соединяется резиновым шлейфом. Также под дисплеем располагаются светодиоды. Лучше всего отпилить часть печатки с дисплеем и припаять шлейф с коннектором, как я и поступил.

|300 |300

Распиновка дисплея|300

На плате с дисплеем я напаял несколько перемычек, дабы уменьшить количество проводов.

Распиновка на печатке, вид сверху|500

Далее дисплей подключается к микроконтроллеру по такой схеме:

Подключение к МК|300

Я использовал ATmega8, но подойдут и многие другие микроконтроллеры семейства AVR. Пины можно изменить в программе. Схему я питал напряжением 3.3в, но для питания от пяти нужно сделать коммутацию на резисторах. Драйвер собран из нескольких источников. Код для CodeVisionAvr. Русские буквы в набор входят 🙂

Функции приведены ниже

void lcd_init(void); //инициализация дисплея  void lcd_contrast(unsigned char contrast); //установить контраст  void lcd_clear(void); //очистить диплей  void lcd_clear_area(unsigned int line, unsigned char startX, unsigned char endX); //очистить поле  void lcd_clear_line(unsigned int line); //очистить линию  void lcd_gotoxy(unsigned int x, unsigned int y); //переместить курсов в заданную позицию  void lcd_putch(char chr); //вывод символа  void lcd_str(char *str); //вывод строки  void lcd_image( flash unsigned char img[]); //вывод изображения из программы Image generate  void lcd_extrachar(int num); //вывод дополнительных символов (пока только значок заряда, 7x10) 

Пины меняются в заголовочном файле lcd.h

#define LCD_CLK_PIN PORTB.0 #define LCD_DATA_PIN PORTB.1 #define LCD_DC_PIN PORTB.2 #define LCD_RST_PIN PORTB.3 

Стоит напомнить, что префикс flash перед переменной означает, что она сохраняется не в оперативной памяти, а во flash памяти МК. Использовал по причине нехватки памяти при хранении изображений.

Ну и демонстрация работы

|300 |300

|300 |300

Ссылки:

Как приклеить шлейф к дисплею nokia 5110

Сайт больше не работает
на Raspberry Pi

Подключение дисплея от nokia 5110/3310 к AVR

Итак, наконец-то повезло приобрести телефон nokia 5110. В телефоне много разных вкусностей, но нас интересует дисплей.

Если вы используете AVR-GCC / WinAvr, то вам нужна эта библиотека. Настоятельно рекомендую изучить эту статью.

Рисунок 1 – Телефон, собственно

Рисунок 1 – Телефон, собственно

Разбираем телефон и добираемся до дисплея.

Дисплей с печаткой соединяется резиновым шлейфом. Также под дисплеем располагаются светодиоды. Лучше всего отпилить часть печатки с дисплеем и припаять шлейф с коннектором, как я и поступил.

Рисунок 5 – Распиновка дисплея

На плате с дисплеем я напаял несколько перемычек, дабы уменьшить количество проводов. Рисунок 5 – Распиновка дисплея

Рисунок 6 – Распиновка на печатке, вид сверху

Рисунок 6 – Распиновка на печатке, вид сверху

Далее дисплей подключается к микроконтроллеру по такой схеме:

Рисунок 7 – Подключение к МК

Рисунок 7 – Подключение к МК

Я использовал ATmega8, но подойдут и многие другие микроконтроллеры семейства AVR. Пины можно изменить в программе. Схему я питал напряжением 3.3в, но для питания от пяти нужно сделать коммутацию на резисторах. Драйвер собран из нескольких источников. Код для CodeVisionAvr. Русские буквы в набор входят 🙂

Функции приведены ниже

void lcd_init(void); //инициализация дисплея void lcd_contrast(unsigned char contrast); //установить контраст void lcd_clear(void); //очистить диплей void lcd_clear_area(unsigned int line, unsigned char startX, unsigned char endX); //очистить поле void lcd_clear_line(unsigned int line); //очистить линию void lcd_gotoxy(unsigned int x, unsigned int y); //переместить курсов в заданную позицию void lcd_putch(char chr); //вывод символа void lcd_str(char *str); //вывод строки void lcd_image( flash unsigned char img[]); //вывод изображения из программы Image generate void lcd_extrachar(int num); //вывод дополнительных символов (пока только значок заряда, 7x10)

Пины меняются в заголовочном файле lcd.h

#define LCD_CLK_PIN PORTB.0 #define LCD_DATA_PIN PORTB.1 #define LCD_DC_PIN PORTB.2 #define LCD_RST_PIN PORTB.3

Стоит напомнить, что префикс flash перед переменной означает, что она сохраняется не в оперативной памяти, а во flash памяти МК. Использовал по причине нехватки памяти при хранении изображений.

Ну и демонстрация работы

Ссылки:

● Проект 16: Графический индикатор. Подключение дисплея Nokia 5110

В этом эксперименте мы рассмотрим графический дисплей Nokia 5110, который можно использовать в проектах Arduino для вывода графической информации.

Необходимые компоненты:

Жидкокристаллический дисплей Nokia 5110 – монохромный дисплей с разрешением 84×48 на контроллере PCD8544, предназначен для вывода графической и текстовой информации. Питание дисплея должно лежать в пределах 2.7–3.3 В (максимум 3.3 В, при подаче 5 В на вывод VCC дисплей может выйти из строя). Но выводы контроллера толерантны к +5 В, поэтому их можно напрямую подключать к входам Arduino. Немаловажный момент – низкое потребление, что позволяет питать дисплей от платы Arduino без внешнего источника питания.
Схема подключения Nokia 5110 к Arduino показана на рис. 16.1.

Arduino проект www.arduino-kit.ru

Рис. 16.1. Схема подключения Nokia 5110 к Arduino

Для работы с дисплеем Nokia 5110 будем использовать библиотеку Adafruit_GFX, которая имеет богатые возможности для вывода графики и текста. В нашем эксперименте мы будем получать данные освещенности с фоторезистора, подключенного к аналоговому входу Arduino A0, и выводить данные освещенности в числовом и графическом представлениях. Схема подключения показана на рис. 16.2.

Подключение дисплея Nokia 5110

Рис. 16.2. Схема подключения Nokia 5110 и фоторезистора к Arduino

Код скетча нашего эксперимента показан в листинге 16.1. Мы считываем данные с фоторезистора и отображаем числовое значение, а также в графическом виде (прогресс-бар) значение освещенности в процентах от максимального значения. Значения минимальной и максимальной освещенности берем из эксперимента 13.

// Подключение библиотеки #include #include // PIN 7 - RST Pin 1 on LCD // PIN 6 - CE Pin 2 on LCD // PIN 5 - DC Pin 3 on LCD // PIN 4 - DIN Pin 4 on LCD // PIN 3 - CLK Pin 5 on LCD Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); const int LIGHT=A0; // Контакт A0 для входа фоторезистора const int MIN_LIGHT=200; // Нижний порог освещенности const int MAX_LIGHT=900; // Верхний порог освещенности // Переменная для хранения данных фоторезистора int val1,val2 = 0; void setup() < display.begin(); // установить контраст фона экрана // очень важный параметр! display.setContrast(60); display.clearDisplay(); // очистить экран delay(2000); > void loop() < val1 = analogRead(LIGHT); // Чтение показаний фоторезистора drawText(val1,1); // вывести текст // масштабирование значения потенциометра к 0–75 val2= map(val1, MIN_LIGHT, MAX_LIGHT, 0, 75); // вывод черного прямоугольника в % display.fillRect(5, 25, val2, 10, 1); // вывод белой части прямоугольника display.fillRect(5+val2,25, 75-val2, 10, 0); display.display(); delay(1000); // пауза перед новым измерением drawText(val1,2); // стереть текст > // процедура вывода текста void drawText(unsigned long num,int color) < display.setTextSize(2); // размер шрифта display.setCursor(20,5); // позиция курсора if(color==1) display.setTextColor(BLACK); // вывести значение else display.setTextColor(WHITE); // стереть (белым по белому) display.print(num); >

Порядок подключения:

1. Подключаем датчик дисплея Nokia 5110 и фоторезистор по схеме на рис. 16.2.
2. Загружаем в плату Arduino скетч из листинга 16.1.
3. Перекрывая рукой поток света, смотрим на экране дисплея изменение показаний освещенности.

Листинги программ скачать

Ардуино: графический ЖК дисплей Nokia 5110

Символьный дисплей, который мы уже изучили ранее, открыл перед нами большие возможности в плане вывода информации в «человеческом» виде. Можно выводить текстовые сообщения, значения различных параметров, показания датчиков. Если. захотеть, можно даже отобразить на символьном дисплее «псевдографику». Но что, если нам требуется ещё больший уровень информативности? Если для понимания процесса нам нужен, например, график? Что, если мы хотим отобразить состояние робота не сигналом светодиода, а картинкой? Изобразить эмоцию?

IMG_20150927_150442_

Поможет нам в этом деле графический дисплей, а именно Nokia 5110 (или 3310). Этот вид дисплеев широко распространен в мире учебных микроэлектронных платформ, таких как Ардуино. Он легко подключается, и легко управляется даже слабыми микроконтроллерами.

Список необходимых компонентов

Для выполнения простого примера с дисплеем Nokia 5110, кроме самого модуля дисплея, потребуется Ардуино-совместимый контроллер, макетная плата и немного проводов вилка-вилка. Необходимые компоненты можно добавить в корзину прямо здесь, и затем оформить заказ в нашем интернет-магазине.

Подключение дисплея Nokia 5110

Дисплей монохромный, имеет разрешение 84×48 точек. Как правило, дисплеи Nokia 5110, предназначенные для таких как мы с вами энтузиастов, поставляются на плате в паре с контроллером PCD8544 и штыревым разъемом. У такого дисплейного модуля есть всего 8 ног:

  • RST — сброс (Reset);
  • CE — выбор устройства (Chip Select);
  • DC — выбор режима (Data/Command select);
  • DIn — данные (Data In);
  • Clk — тактирующий сигнал (Clock);
  • Vcc — питание 3 — 5 Вольт;
  • BL — подсветка;
  • Gnd — земля.

Схема подключения к Ардуино:

ЖК дисплей Nokia 5110 RST CE DC DIn Clk Vcc BL Gnd
Ардуино Уно 7 6 5 4 3 +5V +5V GND

Программа. Вывод текста

Для управления дисплеем нам потребуется две библиотеки Adafruit_GFX и Adafruit_PCD8544, которые можно установить через менеджер библиотек либо скачать с github:

https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip
https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip

После установки библиотек, пробуем вывести на наш дисплей простой текст «Hello world!»:

#include #include Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); void setup() < // инициализация и очистка дисплея display.begin(); display.clearDisplay(); display.display(); display.setContrast(50); // установка контраста delay(1000); display.setTextSize(1); // установка размера шрифта display.setTextColor(BLACK); // установка цвета текста display.setCursor(0,0); // установка позиции курсора display.println("Hello, world!"); display.display(); >void loop()

Как видим, все достаточно просто. Функция setContrast — определяет контраст дисплея. Это сродни тому, как если бы мы крутим потенциометр контраста в схеме символьного дисплея. Если после запуска программы у нас на дисплее ничего не видно, или видно плохо — варьируем значение контраста.

Задаем размер шрифта функцией setTextSize. Если указываем 1, то каждая буква шрифта будет размером 5×7 пикселей. Размер 2 увеличит символы ровно в два раза по высоте и ширине.

Следующая полезная функция — setTextColor. У нас есть всего два цвета — черный и белый. Для них определены две константы: BLACK и WHITE.

Наконец, setCursor(x, y) устанавливает курсор в заданные координаты x и y, так же как в программе символьного дисплея.

Непосредственно, сам вывод текста осуществляется уже знакомой функцией println.

Если все сделать правильно, получим такую картинку:

IMG_20150927_150646_

Программа. Вывод геометрии

Успешно решив задачу с выводом текста, попробуем теперь поработать с примитивной графикой. Нарисуем треугольники, окружности и прочие фигуры.

За отрисовку окружности отвечает функция drawCircle. Пример вызова функции для окружности с центром в точке , радиусом 5 пикселей и черным цветом:

drawCircle(20, 20, 5, BLACK);

Теперь попробуем прямоугольник с координатами верхнего левого угла , нижнего правого , и цветом BLACK (черный, то бишь).

drawRect(10, 10, 20, 20, BLACK);

Функция drawRoundRect — нарисует прямоугольник со скругленными углами. Также у этих двух функций есть варианты со сплошной заливкой внутренней части фигуры: fillRect и fillRoundRect.

У треугольника следует задать все три пары координат:

drawTriangle(10, 10, 20, 10, 20, 20, BLACK);

И у него тоже есть вариант с заливкой — fillTriangle.

Наконец, просто отрезок из точки к точке :

drawLine(0, 0, 20, 20, BLACK);

И самое простое, что можно нарисовать — один пиксель:

drawPixel(10, 10, BLACK);

А вот как будет выглядеть программа, если мы захотим нарисовать некоторые из этих фигур, по-очереди:

#include #include Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); void setup() < // инициализация и очистка дисплея display.begin(); display.clearDisplay(); display.display(); display.setContrast(50); // установка контраста delay(1000); >void loop() < // пиксел display.clearDisplay(); display.drawPixel(10, 10, BLACK); display.display(); delay(1000); // линия display.clearDisplay(); display.drawLine(0, 0, 50, 30, BLACK); display.display(); delay(1000); // прямоугольник display.clearDisplay(); display.drawRect(0, 0, 10, 10, BLACK); display.display(); delay(1000); // прямоугольник залитый display.clearDisplay(); display.fillRect(0, 0, 10, 10, BLACK); display.display(); delay(1000); // треугольник display.clearDisplay(); display.drawTriangle(0, 0, 40, 40, 30, 20, BLACK); display.display(); delay(1000); // окружность в центре display.clearDisplay(); display.drawCircle(display.width()/2, display.height()/2, 10, BLACK); display.display(); delay(1000); >

Программа. Подготовка изображений

А теперь, воспользуемся всей мощью графического дисплея — выведем на него изображение!

Чтобы отобразить на дисплее картинку, нам потребуется привести её к нужному размеру и формату. Как уже упоминалось, дисплей Nokia 5110 имеет разрешение 84×48 точек. Значит и наша картинка должна быть точно таким же размером.

Уменьшить и обрезать картинку до требуемых размеров можно в самом простом редакторе mspaint. Там же нужно сохранить картинку в формате BMP с 256 цветами.

imgtocode_paint imgtocode_save

Следующий шаг — конвертировать bmp файл в массив нулей и единиц, который мы и вставим в программу для Arduino. Для конвертации воспользуемся онлайн инструментом на нашем сайте: https://tools.robotclass.ru/bmp2bin/bmp2bin.html

Просто выбираем подготовленный bmp файл на локальном компьютере, и указываем одну из систем счисления: двоичную или шестнадцатеричную. Обе одинаково подходят для нашей цели.

Результатом работы bmp2bin станет огромный массив двоичных чисел, который мы должны будем вставить в следующую программу:

#include #include Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); const unsigned char PROGMEM smileBmp[] = < 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79, 0xc0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x71, 0xc0, 0x0, 0x1, 0xef, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0xc0, 0x0, 0x1, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0xc0, 0x0, 0x1, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x1, 0xef, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 >; void setup() < // инициализация и очистка дисплея display.begin(); display.clearDisplay(); display.display(); // установка контраста display.setContrast(50); delay(1000); // отрисовка изображения display.drawBitmap(0, 0, smileBmp, 84, 44, BLACK); display.display(); >void loop()

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

IMG_20150927_032235_

Вот и все на сегодня! В следующем уроке на тему Nokia 5110 мы попробуем анимировать изображение на дисплее. Попробуем даже сделать небольшую игру!

К размышлению

Дисплей Nokia5110 — очень популярен, но с каждым днём его всё сложнее найти. Дело в том, что именно этот ЖК дисплей производился для сотового телефона, который уже давным-давно был снят с производства.

Чем же заменить Nokia5110? Варианты есть, например:

  • Монохромный OLED дисплей 128×64
  • Монохромный ЖК дисплей HX1230 96×68
  • Цветной TFT дисплей 240×320

А если вместо Ардуино использовать более мощные микроконтроллеры ESP32 или STM32, то можно рассмотреть широкий спектр TFT дисплеев с различным разрешением и даже варианты с сенсорной панелью.

Изменено: 27 Сен, 2015 16:45

Ардуино: графический ЖК дисплей Nokia 5110 : 37 комментариев

Жду продолжения, пишите!
А где ссылка на урок с анимацией изображения на дисплее?
Олег Евсегнеев говорит 30.06.2016 в 17:46 :
Урок пока не готов. Думаю скоро доделаем!
Николай Максимович Зайченко говорит 29.10.2021 в 03:57 :

Здравствуйте
Откуда у вас такие широкие познания в программировании?
И можно ссылочку на ваш следующий урок?

Yurchil говорит 08.10.2016 в 23:59 :
а конвертер в бинарный массив работает?
у меня все элементы массива равны 0x00
Олег Евсегнеев говорит 09.10.2016 в 04:31 :

Работает!
Обязательно нужно проверить формат исходного файла. Должен быть 256-цветный BMP. 8 бит на пиксел.

NaDmitrAn говорит 30.11.2016 в 03:08 :

C другого сайта брал подобный скетч, вылезла проблема, все выводит, а текст почему-то нет. В тот промежуток времени, кода должен выводиться текст просто пустой экран. Взял пример с http://playground.arduino.cc/Code/PCD8544 и у меня все выводит. Где собака порылась, даже в Proteus точно так-же себя ведет.

Павел говорит 17.02.2018 в 21:07 :
там пропущена строчка display.display();
поэтому и не выводит
степа говорит 24.05.2017 в 13:30 :
а где ссылка на урок с анимацией ужо 2017 за два года можно было сделать?
Роман говорит 13.09.2017 в 15:43 :

Да, почему-то обещанного урока с анимацией мы так и не дождались. Сделайте нам урок, пожалуйста, особенно интересно было бы подробно узнать про меню и навигацию по нему.

витек говорит 06.06.2017 в 14:26 :
пытался загрузить скетч.выдает ошибку.но япросто скопировал текс.
Олег Евсегнеев говорит 06.06.2017 в 14:44 :
А что за ошибка?
Nikolay говорит 09.10.2017 в 23:35 :

Здравствуйте!
Интересная тема!
Спасибо за Уроки и примеры! Бегло, в этой строке, в комментариях увидел ошибку.
display.setCursor(0,0); // установка цвета текста
Это «//установка курсора по заданным координатам»

Олег Евсегнеев говорит 10.10.2017 в 18:49 :
Спасибо! Исправили ошибку.
А урока с анимированными изображениями не будет?
Сергей говорит 11.02.2018 в 20:06 :
пока не изменил на display.setContrast(61); // установка контраста
ничего не увидел.
vik говорит 29.07.2018 в 16:08 :

Чтобы заработало внес изменения в скетч:
1.вставить вначале скетча строку
#include
2.Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
3.увеличить контраст на 10 единиц
display.setContrast(60);
Спасибо!

vik говорит 29.07.2018 в 16:10 :
исправление
#include
vik говорит 29.07.2018 в 16:12 :
vik говорит 29.07.2018 в 16:16 :

При вставке в коментарий ,почему то затирается название библиотеки,а остаётся только #include и больше никаких символов.
Эта библиотека SPI для Arduino.

Сергей говорит 10.09.2018 в 16:20 :

День добрый!
Не работает вообще конвертер, не могли бы скинуть рабочую ссылку или аналогичный конвертер?

Олег Евсегнеев говорит 10.09.2018 в 18:04 :

Должен работать, постоянно им пользуемся. Может быть файл у вас имеет неподходящий формат? Как и в чем его сохраняете?

Сергей говорит 13.09.2018 в 20:47 :

Пробовал варианты сохранения в paint в формате bmp (8, 16, 32 бита), не пошло, затем в Ps CC тоже в bmp с различной глубиной цвета

Stopper говорит 26.10.2018 в 13:44 :

Почините же пожалуйста конвертер. Поле «результат» остаётся пустым, если выбрать прямую организацию матрицы. Неоднократно уже использовал сервис, а тут такая подстава �� или хоть дайте ссылку на офлайновый инструмент. LCD Assistant не заработал, пробовал разные настройки.

Олег Евсегнеев говорит 26.10.2018 в 16:19 :

Хм, а выложите пожалуйста свой файл куда-нибудь со ссылкой, проверим. Сохраняете ровно в том формате, который указан в статье?

Stopper говорит 31.10.2018 в 14:22 :

Ну, вот, например файл, который не получается сконвертировать.
https://drive.google.com/file/d/1nmPx_n0kh934_-SPPbNrV9jX_Lcf18O2/view?usp=sharing Создан в MS Paint, сохранён в bmp с 256 цветами. При этом как обычно вылезало предупреждение о том, что цветопередача может быть искажена и всё. При этом попробовал картинки, которые раньше конвертировал, с ними получилось, хотя сохранялось так же.

Олег Евсегнеев говорит 11.11.2018 в 14:42 :
Немного пофиксили скрипт. Попробуйте теперь!
Stopper говорит 20.12.2018 в 14:42 :
Большое спасибо, всё работает ��
Константин говорит 13.11.2018 в 12:15 :

Укажите, пожалуйста, что кроме библиотеки Adafruit_GFX нужна еще библиотека Adafruit_PCD8544.
Мелочь, конечно, но пару вечеров пока разобрался убил.

Олег Евсегнеев говорит 13.11.2018 в 22:15 :
Полезное замечание, спасибо! Добавили ссылку.
Илья говорит 28.03.2019 в 02:10 :
Пины можно переназначить?
Михаил говорит 03.07.2019 в 04:24 :
Шёл 2019 год, а урока с анимацией так и не сделали…
Антон говорит 23.09.2019 в 14:06 :

ну так в чем проблема самому догадаться, как заставить анимацию крутиться? ))) Берете разные наборы массивов и подставляете их с той частотой, с которой будет анимация. Сначала один блок показываете, потом другой, потом снова первый. Вот уже и анимация в 2 кадра

const unsigned char PROGMEM smileBmp[] = <
0x0,0xF8,0x0,0x0,0x88,0x0,0x0,0x8C,0x0,
0x0,0x98,0x0,0x0,0x70,0x7,0x0,0x20,0x87,
0x0,0x20,0x87,0x0,0x23,0x0,0x7,0xFE,0x0,
0x4,0x20,0x0,0x4,0x20,0x0,0x4,0x20,0x0,
0xC,0x20,0x0,0x0,0x20,0x0,0x0,0x7F,0x80,
0x0,0x40,0x80,0x0,0x40,0x80,0x0,0x40,0x80,
0x0,0x40,0xC0,0x0,0x40,0x0,0x0,0x40,0x0,
0x0,0x40,0x0,0x0,0xC0,0x0,0x0,0x0,0x0
>;
const unsigned char PROGMEM smileBmp2[] = <
0x0,0xF8,0x0,0x0,0x88,0x0,0x0,0x8C,0x0,
0x0,0x98,0x0,0x0,0x70,0x0,0x0,0x20,0x0,
0x0,0x20,0x0,0x0,0x20,0x0,0x0,0xF8,0x0,
0x0,0xA8,0x0,0x0,0xA8,0x0,0x0,0xA8,0x0,
0x1,0xAC,0x0,0x1,0x24,0x0,0x1,0x74,0x0,
0x0,0x50,0x0,0x0,0x50,0x0,0x0,0x50,0x0,
0x0,0x50,0x0,0x0,0x53,0x80,0x0,0x53,0x80,
0x0,0x53,0x80,0x0,0xD8,0x0,0x0,0x0,0x0
>;
void loop() <
// Создать из BMP array HEX github.com/Jekahome/BMP_to_HEX_array
// Анимация
int X = random(display.width());
int Y = 0;
int SPEED = random(5) + 1;
int w = 24;
int h = 24; while (1) <
//1. нарисовать
display.drawBitmap(X, Y, smileBmp, w, h, BLACK);
display.display();
delay(200); //2. стереть
display.drawBitmap(X, Y, smileBmp, w, h, WHITE); //3. перемещение
X += SPEED;
if (X > display.width()) <
X = random(display.width()/2);// по горизонтали рандом появления
Y = random(display.height()/2);// по вертикали рандом появления
SPEED = random(5) + 1;// скорость рандом
> //4. нарисовать
display.drawBitmap(X, Y, smileBmp2, w, h, BLACK);
display.display();
delay(200); //5. стереть
display.drawBitmap(X, Y, smileBmp2, w, h, WHITE);
>
>

Евгений говорит 04.11.2021 в 15:45 :

Преобразование намалеванного bmp файла в HEX последовательность на Rust’e «` use std::io::Write;
use image:: GenericImageView,
ImageBuffer,
Luma
>;
/// Dependencies
///
/// [dependencies]
/// image = «0.23» /// Example
///
/// $ cargo run ../member2.bmp
fn main() if std::env::args_os().len() >1 let args: Vec = std::env::args().collect();
let filename = &args.last().unwrap();
let file_path = std::path::Path::new(filename);
if file_path.exists() let source = image::open(file_path).unwrap();
let (width, height) = source.dimensions();
let gray = source.to_luma();
let len:usize = ((width*height)/8).try_into().unwrap();
let mut buf: Vec = Vec::with_capacity(len);
let mut one_unit = String::from(«»);
for (c,pix) in gray.to_vec().iter().enumerate() let logic= match pix n if n > &1 => «0»,
_ => «1»
>;
one_unit.push_str(logic);
if one_unit.len() == 8 buf.push(one_unit);
one_unit = «».to_owned();
>
>
if one_unit.len() > 0 buf.push(one_unit); >
for (c,i) in buf.iter().enumerate() if c%(width/8) as usize==0 println!(«»);
>
print!(«,», u32::from_str_radix(i, 2).unwrap());
>
let mut out = std::fs::File::create(«../output_hex»).unwrap();
let mut buf_out = std::io::BufWriter::new(out); for (c,i) in buf.iter().enumerate() if c%(width/8) as usize==0 writeln!(buf_out,»»);
>
write!(buf_out, «,», u32::from_str_radix(i, 2).unwrap()).unwrap();
>
>else println!(«Warning:\n File not found in this scope»,filename);
>
>else println!(«Run:\n $cargo run «);
>
> «`

Александр говорит 02.02.2022 в 01:27 :

Здравствуйте. Ознакомился с Вашей статьёй, интересная. Решил попробовать подключить дисплей, ардуино выдаёт «ошибка компиляции» -> candidates: []C:\Users\acer\Documents\Arduino\libraries\Adafruit-PCD8544-Nokia-5110-LCD-library-master/Adafruit_PCD8544.h:27:10: fatal error: Adafruit_SPIDevice.h: No such file or directory
Подскажите что делать. Спасибо

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *