Дисплей nokia 5110 проблемы

Обновлено: 05.07.2024


Это был дисплей мультиметра. Но там соединение ни на шлейфе ни на контактах, а на какой то резиночке. Это silicone zebra connector - вообщем силиконовый зебра соединитель

Но нет худа без добра - тот мультиметр в котором я видел такое соединение, приказал долго жить и без дела лежал в коробочке. Вот из его достав зебру, я вырезал из неё пластиннику нужного мне размера. Сonnector должен плотно прилегать, для этого сделал по высоте его немного побольше. Тщательно зачистив место бедующего прилегания резиночки к стёклышку, установив все детали на место (благо их не много) собрал модуль воедино. Установив нужные библиотеки и залив скетч - любуюсь содеянным.
Немного переделанный скетч из примера к библиотеке Adafruit-PCD8544. Добавлено - функция utf8rus , заменено - падающие звёздочки на снежинки, вставлено - переход goto к отображению русских шрифтов, а также добавлен display.cp437(true) .

Adafruit_PCD8544 display = Adafruit_PCD8544 ( 3 , 4 , 5 , 6 , 7 );

void setup () Serial . begin ( 9600 );

display . begin ();
display . cp437 ( true );
// инициализация выполнена

// вы можете изменить контраст вокруг, чтобы адаптировать дисплей
// для лучшего просмотра!
display . setContrast ( 50 );

display . display (); // показать заставку
delay ( 2000 );
display . clearDisplay (); // очищает экран и буфер

//goto metka; // russian font

// нарисовать один пиксель
display . drawPixel ( 10 , 10 , BLACK );
display . display ();
delay ( 2000 );
display . clearDisplay ();

//рисовать много линий
testdrawline ();
display . display ();
delay ( 2000 );
display . clearDisplay ();

// рисовать прямоугольники
testdrawrect ();
display . display ();
delay ( 2000 );
display . clearDisplay ();

//нарисовать несколько прямоугольников
testfillrect ();
display . display ();
delay ( 2000 );
display . clearDisplay ();

// нарисовать несколько кругов
testdrawcircle ();
display . display ();
delay ( 2000 );
display . clearDisplay ();

// нарисовать круг, радиус 10 пикселей
display . fillCircle ( display . width ()/ 2 , display . height ()/ 2 , 10 , BLACK );
display . display ();
delay ( 2000 );
display . clearDisplay ();

testdrawroundrect ();
delay ( 2000 );
display . clearDisplay ();

testfillroundrect ();
delay ( 2000 );
display . clearDisplay ();

testdrawtriangle ();
delay ( 2000 );
display . clearDisplay ();

testfilltriangle ();
delay ( 2000 );
display . clearDisplay ();

12 символов в шрифте
testdrawchar ();
display . display ();
delay ( 2000 );
display . clearDisplay ();

// тесты отображения текста
display . setTextSize ( 1 );
display . setTextColor ( BLACK );
display . setCursor ( 0 , 0 );
display . println ( "Hello, world!" );
display . setTextColor ( WHITE , BLACK ); //«перевернутый» текст
display . println ( 3.141592 );
display . setTextSize ( 2 );
display . setTextColor ( BLACK );
display .print( "0x" ); display . println ( 0xDEADBEEF , HEX );
display . display ();
delay ( 2000 );

//пример вращения
display . clearDisplay ();
display . setRotation ( 1 ); // повернуть на 90 градусов против часовой стрелки, также можно использовать значения 2 и 3, чтобы идти дальше.
display . setTextSize ( 1 );
display . setTextColor ( BLACK );
display . setCursor ( 0 , 0 );
display . println ( "Rotation" );
display . setTextSize ( 2 );
display . println ( "Example!" );
display . display ();
delay ( 2000 );

// вернуться обратно без вращения
display . setRotation ( 0 );

//metka:
// russian font
display . clearDisplay ();
display . setTextColor ( BLACK );
display . setCursor ( 0 , 0 );
display . setTextSize ( 1 );
display . println ( utf8rus ( "Шрифт 1" ));
display . setTextSize ( 2 );
display . println ( utf8rus ( "Шрифт2" ));
display . setTextSize ( 3 );
display . println ( utf8rus ( "Шр3" ));
display . display ();
delay ( 5000 );

// миниатюрный растровый дисплей
display . clearDisplay ();
display . drawBitmap ( 30 , 16 , logo16_glcd_bmp , 16 , 16 , 1 );
display . display ();

// invert the display
display . invertDisplay ( true );
delay ( 1000 );
display . invertDisplay ( false );
delay ( 1000 );

// нарисовать растровую иконку и анимировать движение
testdrawbitmap ( logo16_glcd_bmp , LOGO16_GLCD_WIDTH , LOGO16_GLCD_HEIGHT );
>

void testdrawchar ( void ) display . setTextSize ( 1 );
display . setTextColor ( BLACK );
display . setCursor ( 0 , 0 );

for ( uint8_t i = 0 ; i < 168 ; i ++) if ( i == '\n' ) continue ;
display . write ( i );
//if ((i > 0) && (i % 14 == 0))
//display.println();
>
display . display ();
>

void testdrawcircle ( void ) for ( int16_t i = 0 ; i < display . height (); i += 2 ) display . drawCircle ( display . width ()/ 2 , display . height ()/ 2 , i , BLACK );
display . display ();
>
>

void testfillrect ( void ) uint8_t color = 1 ;
for ( int16_t i = 0 ; i < display . height ()/ 2 ; i += 3 ) // alternate colors
display . fillRect ( i , i , display . width ()- i * 2 , display . height ()- i * 2 , color % 2 );
display . display ();
color ++;
>
>

void testdrawtriangle ( void ) for ( int16_t i = 0 ; i < min ( display . width (), display . height ())/ 2 ; i += 5 ) display . drawTriangle ( display . width ()/ 2 , display . height ()/ 2 - i ,
display . width ()/ 2 - i , display . height ()/ 2 + i ,
display . width ()/ 2 + i , display . height ()/ 2 + i , BLACK );
display . display ();
>
>

void testfilltriangle ( void ) uint8_t color = BLACK ;
for ( int16_t i = min ( display . width (), display . height ())/ 2 ; i > 0 ; i -= 5 ) display . fillTriangle ( display . width ()/ 2 , display . height ()/ 2 - i ,
display . width ()/ 2 - i , display . height ()/ 2 + i ,
display . width ()/ 2 + i , display . height ()/ 2 + i , color );
if ( color == WHITE ) color = BLACK ;
else color = WHITE ;
display . display ();
>
>

void testdrawroundrect ( void ) for ( int16_t i = 0 ; i < display . height ()/ 2 - 2 ; i += 2 ) display . drawRoundRect ( i , i , display . width ()- 2 * i , display . height ()- 2 * i , display . height ()/ 4 , BLACK );
display . display ();
>
>

void testfillroundrect ( void ) uint8_t color = BLACK ;
for ( int16_t i = 0 ; i < display . height ()/ 2 - 2 ; i += 2 ) display . fillRoundRect ( i , i , display . width ()- 2 * i , display . height ()- 2 * i , display . height ()/ 4 , color );
if ( color == WHITE ) color = BLACK ;
else color = WHITE ;
display . display ();
>
>

void testdrawrect ( void ) for ( int16_t i = 0 ; i < display . height ()/ 2 ; i += 2 ) display . drawRect ( i , i , display . width ()- 2 * i , display . height ()- 2 * i , BLACK );
display . display ();
>
>

void testdrawline () <
for ( int16_t i = 0 ; i < display . width (); i += 4 ) display . drawLine ( 0 , 0 , i , display . height ()- 1 , BLACK );
display . display ();
>
for ( int16_t i = 0 ; i < display . height (); i += 4 ) display . drawLine ( 0 , 0 , display . width ()- 1 , i , BLACK );
display . display ();
>
delay ( 250 );

display . clearDisplay ();
for ( int16_t i = 0 ; i < display . width (); i += 4 ) display . drawLine ( 0 , display . height ()- 1 , i , 0 , BLACK );
display . display ();
>
for ( int8_t i = display . height ()- 1 ; i >= 0 ; i -= 4 ) display . drawLine ( 0 , display . height ()- 1 , display . width ()- 1 , i , BLACK );
display . display ();
>
delay ( 250 );

display . clearDisplay ();
for ( int16_t i = display . width ()- 1 ; i >= 0 ; i -= 4 ) display . drawLine ( display . width ()- 1 , display . height ()- 1 , i , 0 , BLACK );
display . display ();
>
for ( int16_t i = display . height ()- 1 ; i >= 0 ; i -= 4 ) display . drawLine ( display . width ()- 1 , display . height ()- 1 , 0 , i , BLACK );
display . display ();
>
delay ( 250 );

display . clearDisplay ();
for ( int16_t i = 0 ; i < display . height (); i += 4 ) display . drawLine ( display . width ()- 1 , 0 , 0 , i , BLACK );
display . display ();
>
for ( int16_t i = 0 ; i < display . width (); i += 4 ) display . drawLine ( display . width ()- 1 , 0 , i , display . height ()- 1 , BLACK );
display . display ();
>
delay ( 250 );
>

k = source . length (); i = 0 ;

Сегодня небольшой пост о том, как я чинил дисплей для Nokia с Али-экспресса. Кому-то может пригодиться, хотя явление неприятное, особенно, если дисплейчик такой приходит первый раз, и понятия не имеешь, что с ним делать. Мне повезло, у меня один уже был, так что неисправность была очевидной. В то же время, если ваш не работает, то не надо сразу впадать в панику и всё разбирать, проблема может быть и в программном коде. А может быть в замыкании или плохо пропаянных ножках, их надо прозвонить в первую очередь, благо, что точек для пайки две для пайки каждой ножки - сверху и снизу платы, надо всё между собой прозвонить - может припаяли плохо?

Запустить мне свой экранчик, кстати, удалось в своё время далеко не с первой попытки, а всё дело, конечно же, крылось в библиотеках и очень похоже, что моей конкретной версии программы-компиллятора, но обо всём по порядку.

Начало проблемы.

Началось всё с того, что я очень ленивый, и мне было лень отложить дисплейчик в сторону от места, где я работал. В результате я на него всё-таки уронил пинцет, и хоть он лежал экраном вниз, я умудрился поставить на экран пару царапин. Обидно. Вывод: поверхность экранчика очень уязвима к царапкам, лучше её заклеивать специальной плёнкой. Хотя да, защита на него, кстати, была наклеена ещё с завода - она не спасла :) Хотел потереть тряпочкой, думал, удастся отполировать царапины. В результате на середине экрана появилось ещё в добавок потемнение непонятного цвета. Давить эти дисплеи тоже оказалось нельзя :) Дисплей от неубиваемой Нокии сам по себе оказался не таким уж и неубиваемым. Понимая, что я конкретно накосячил, в холодном поту (ладно, утрирую) экстренно втыкаю его в другой свой проект на макетке вместо заведомо исправного дисплея и. тишина. Ничего не работает. Всё. Сломал.

Решение проблемы.

Ну, неужели так запросто сломал? Неужели вот прямо так сломал, что ни единого пикселя не работает? Это были следующие, уже более более здравые мысли :)

Начал гуглить, кто такой дисплей ломал ещё до меня :) Не нашёл, но нашёл, как его разбирать.


Сначала сзади надо отжать четыре металлические защёлки и выщелкнуть вот эту железку

Разбирается всё достаточно просто. Отщёлкнул эту железку. Вероятно, экранчик останется в ней. Надо аккуратно из неё всё расщёлкать и вытолкать. Я отковыривал прямо ногтем, специально не задействовал отвёртку, чтоб уж точно ничего не отколоть. С моей аккуратностью это вполне вероятно :) Вам тоже советую действовать решительно, но очень деликатно. Можно взять что-то пластиковое для отковыривания, но экран хрупкий.

Под ней оказываются контактные пластинки на самом экранчике. Их-то я и решил почистить. Собственно, лучше этого не делать, но раз я убедился, что экран не работает (пока что я был уверен, что по моей вине) я решил: или доломать его окончательно, или починить. Потому протёр всё спиртом и поскоблил отвёрткой.


Площадки царапаные - это уже я отвёрткой специально постарался :)

С противоположной стороны коннектор соединяет контактную плату с экраном, её я тоже поскрёб отвёрткой.


Контактная плата экрана 5110 для Ардуино - вид изнутри

И вот когда я всё пошкрябал, разобрал и собрал, да ещё и не один раз, а потом попробовал включить в разобранном состоянии, прижав контакты посильнее пальцами, то раза с двадцатого на экране вдруг всё заработало!

На радостях я собрал всё обратно, надел металлический кожух, всё защёлкнул. а экран снова не работает.

Дальнейшее решение проблемы.

Но всё же, теперь было понятно, что я ничего не ломал, а дело в плохих контактах. В Интернете пишут, что на десяток дисплеев может приходиться один сломанный. Дисплеи классные, но пишут, что их больше не производят, и мы сейчас скупаем старые запасы, которые китайцы приспособили к подключению для Ардуино. В общем, дисплейчики классные, но брак идёт. В моём случае брак оказался в коннекторе. Я ещё помучился, пытаясь прочистить контакты или как-то получше закрепить площадку с коннектором - экран мигал, текст то появлялся, то исчезал. Я плюнул на это дело и решил, что надо решать проблему кардинально, то есть пайкой. Недолго думая, я решил просто соединить проводками соответствующие контактные площадки. Обратите внимание, что пины идут не в той последовательности, в которой расположены площадки! Экранчику вряд ли по душе пайка, но я решил идти до конца. Паяльник, всё же я взял на 25 ватт. Но мне повезло - медные площадки лудились идеально, хватало мгновенного касания жалом. Я не стал их пролуживать качественно по всей поверхности, решил, что главное - ничего не перегреть. Очевидно, где-то внутри к ним подпаяны контакты от самого дисплея, и если они отпаяются от температуры, будет уже ничего не восстановить. А дальше такими же короткими пайками я припаял проводки. Две площадки случайно слил оловом вместе. Чтобы их разъединить - приложил между ними стальную иглу и коснулся жалом. Олово не смачивает сталь без специальных флюсов, так что припой сразу растёкся и площадки разъединились.

В итоге, когда всё спаял и собрал, получилось как-то так:

Проверив, что ничего не коротит, разогнув все проводки, я наконец решил подключить дисплей и. о, чудо: всё заработало! Дисплей работает, и где-то неделю уже с ним проблем нет.

Паять или не паять - это личный выбор каждого :) Думаю, когда всё не работает, как у меня, то рискнуть стоит, если есть какие-то навыки пайки smd и микро-пинцет. Работа небольшая, но требующая аккуратности.

А как же, всё-таки, его запускать?

Думаю, если вы это читаете, это может быть и ваш первый дисплей, так что, если ничего не работает, не надо отчаиваться, может быть проблема и просто в самом коде. Вернее скорее всего - в библиотеках. Библиотеки к дисплеям очень прожорливые, хуже только с прожорливостью (из того что я встретил) у sd.h для работы с картой памяти, но о ней как-нибудь потом. А прожорливость библиотек для Nikia 5110 обусловлена всякими графическими прибамбасами, которые часто нам совсем и не нужны. В библиотеку могут быть вшиты функции графических примитивов, ещё много всякой ерунды, а нам, может, надо всего-навсего данные с датчика вывести.

В общем, для задач вывода текста, экономии памяти Arduino и для тестирования работоспособности по принципу вывода "Hello, world!", я рекомендую библиотеку pcd8544:

Мне её оказалось достаточно для проекта метеостанции, которую я ещё не доделал, но которая из-за кучи датчиков и записи данных на карту оказалась очень прожорливой, так что библиотеки Адафрут оказались непозволительной роскошью.

Итак, для начала соединим всё на макетке. Подозреваю (я только подозреваю, но я не стал рисковать дисплеем (да, я паранойщик :))) - можно всё подключать напрямую и подавать пять вольт, но не надо так! Возможно, это сократит срок службы дисплея.

RST - 10 килом;
CE - 1 килом;
DC - 10 килом;
DIN - 10 килом;
CLK - 10 килом;
VCC - +3,3 вольта (на Ардуине должен быть такой пин)
LIGHT - через резистор (лучше подстроечник, 1-10 килом) соединить с землёй, или вообще его пока оставить - это подсветка, только и всего, на первом запуске она не нужна.
GND - общий, земля, минус питания, как его ещё обозвать? :)

На счёт килоомов: строжайше следовать рецепту не так важно. В моём (уже не новом) дозиметре на микроконтроллере PIC - там я подключал аналогичный дисплей через 3,3 килома. В общем, 10 к дано скорее, как наиболее распространённый номинал, и понятно, что речь идёт просто о килоомах, не сотнях ом, не мегомах - вот и всё.

Теперь надо без ошибок подключить пины через эти резисторы к Ардуино. Я думаю, что подключать текстовый дисплей QC1602A было сложнее и тоскливее.

void setup ()
lcd. begin (84, 48);
// Тут мы инициализировали дисплей и задали его размер в точках, уточните размерность вашего, но скорее всего, она такая же: 84х48.
delay(1000);
// Я оставлю этот делэй тут - пусть секундочку при включении всё прогреется, установится, напряжения придут в норму, скорее всего, его можно убрать, но лучше давать небольшой интервал технике на раскачку для защиты от сбоев.
lcd . setCursor (0, 0);
lcd . print ( "Hello, world!" );
>

Сейчас по-быстрому скомпиллировал этот текст в Ардуину - всё работает. А вот если у вас не работает, то надо думать. Перепроверить все соединения, возможно, всё-таки поискать другие библиотеки, совместимые с вашим компиллятором, а уж если и там всё глухо, то начинать копать сам экран. Всё же, я вижу простейшим решением не мучиться с первым дисплеем - сразу купить хотя бы пару. Второй пригодится для другого проекта, а может и поможет сэкономить кучу времени по выявлению неисправности первого. Но мой первый оказался целым, не повезло на второй :)

Тима аватар

немного по-гуглил, и не нашел как его можно подключить к ардуино. Может кто сталкивался, можно ли его "скрестить" с ардуинкой? В наличии есть мега, нано, и микро-про.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

на форуме есть же поиск, да и в гугле немало статей. совсем обленились


  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

на форуме есть же поиск, да и в гугле немало статей. совсем обленились

воспользовался поиском. Везде используют монохромный экран от нокиа 5110.

Я же выложил ссылку на мой экран. У меня экран цветной! И хоть там и написано "Nokia 5110", к нему он отношения не имеет, по крайней мере я не встречал телефон с таким экраном.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Там есть ссылки на описание, библиотеки и схему! Но не могу найти схему, как его подключить к ардуине. И желательно бы пример скетча.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

так ведь даже в названии темы указан дисплей нокии 51110, а он монохромный

в той либе что вы дали не увидел режим работы с SPI, вроде только паралельный режим, хотя на картинке явно дисплей с последовательным интерфейсом

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

так ведь даже в названии темы указан дисплей нокии 51110, а он монохромный

в той либе что вы дали не увидел режим работы с SPI, вроде только паралельный режим, хотя на картинке явно дисплей с последовательным интерфейсом

Вот-вот, и я о том же! Пока разобраться не могу, вот и попросил помощи!

А по поводу названия темы, указал 5110 потому что это название было в названии лота!

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

даташит на контроллер

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Сомневаюсь что хватит знаний для такой большой работы. Но я попробую.

Была бы документация на русском.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

С наскока одолеть не получилось. Продаван, у которого покупал этот экран, обещнулся прислать кое-какую документацию, но пока молчит!

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Наковырял скетч для экрана 1.8"

Распиновка экрана там такая

//Param2 instructions:Connect to LCD_Pin SDA/SDI/MOSI(it means LCD_Model Pin_SDA/SDI/MOSI Connect to Arduino_UNO Pin11) //Param3 instructions:Connect to LCD_Pin SCL/CLK/SCLK(it means LCD_Model Pin_SCL/CLK/SCLK Connect to Arduino_UNO Pin10) //Param4 instructions:Connect to LCD_Pin CS/CE(it means LCD_Model Pin_CS/CE Connect to Arduino_UNO Pin9) //Param5 instructions:Connect to LCD_Pin RST/RESET(it means LCD_Model Pin_RST/RESET Connect to Arduino_UNO Pin12) //Param6 instructions:Connect to LCD_Pin RS/DC(it means LCD_Model Pin_RS/DC Connect to Arduino_UNO Pin8) UTFT myGLCD(QD_TFT180C,11,10,9,12,8); // Remember to change the model parameter to suit your display module! На моем экране не пойму, что за пин под названием "А0" В описании с китайского переводится как "Данные / команды переключатель "(перевод гуглом)
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Как из этого определить к каким пинам ардуины его подключать?
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

так вы сами в 9 посте написали куда подключать)))

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

так вы сами в 9 посте написали куда подключать)))

А где я там писал куда пин А0 экрана подключать?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

сами посмотрите какой пин не сеовпадает с вашим дисплеем он и будет. китайцы бывают меняют названия

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

попробовал, не пашет!

sck ->15, sda ->16, A0 -> 8, reset ->9, cs ->10. Ну, питание и подсветку, само собой.

Но и так не работает!

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Со строчкой myGLCD( ST7735 ,16,15,10,9,8); пытается что-то показать, а именно вертикальные цветные линии

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

да поменяй на свои пины 234567 например. пины же можно назначить любые. я бы лично так сделал. с этими 15-16 пинами хрен разберешь. на одной микро

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

В скетче для 1.8" экрана поменял строчку библиотеки экрана на:

UTFT myGLCD(S6D02A1,16,15,10,9,8); и экран заработал. только начала координат в нижнем левом углу, а не в верхнем левом и изображение получается повернутое на90 градусов против часовой стрелки. Да и разрешение кажется не совпадает.


Как можно перенести начало координат, чтоб изображение было "правильным"?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Разобрался! В строке myGLCD.InitLCD(); в скобках надо указать ориетацию изображения. По умолчанию идет альбомная.

Строчку меняем на myGLCD.InitLCD(PORTRAIT); и радуемся жизни!

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

kisoft аватар

Забавно, про правильное отображение, экран можно повернуть как хошь. Да ладно, я пару штук таких заказал, так что спасибо за наводку, наконец то будет чем побаловаться.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тима аватар

Итак, двигаемся дальше. С выводом текста на экран проблем не возникло. Возникла проблема с выводом изменяющихся значений, а точнее проблема возникает при изменении разрядности с большего на меньший(к примеру с 10 на 9 или с 100 на 99). Последняя цифра не стирается, а просто остается на экране. На экранах 1602 и 2004 эту проблему решал выводои пары-тройки пробелов после значения. Это "прокатывало" потому, что там текст можно было выводить подряд, т.е. при изменении разрядности пробелы смещались и стирали ненужные символы. Тут же для вывода текста указываешь место, где его выводить.

Можено конечно в конце каждого цикла или перед выводом значения закрашивать всё значение пробелами, но тогда значение немного мигает, а это не АЙС!


В предыдущих статьях рассказывал как вывести информацию на LCD1602, OLED и TFT дисплеи их часто можно встретить в различных проектах. В этой статье расскажу об еще одном дисплеи NOKIA 5110, который так же очень популярный. Главной особенность этого дисплея является способность выводить не только текст, но и графические данные.

Технические параметры:

► Контроллере PCD8544;
► Разрешение экрана: 84 x 48 точек;
► Размеры экрана: 36 х 24 мм;
► Напряжение питания логики: 2,7 – 3,3В;
► Габариты: 43,8 х 43,4 х 13,2 мм;
► Вес: 14 г.

Описание дисплея Nokia 5110

Дисплей Nokia 5110 управляется с помощью контроллера PCD8544 (производитель Philips). Контроллер управляет дисплеем с разрешением 84 × 48 пикселей, в качестве связи с микроконтроллером (arduino) используется интерфейс последовательной шины, аналогичный SPI. Согласно документации, чип PCD8544 работает диапазоне от 2,7 до 3,3 В в том числе и логическая часть. Таким образом, при подключении к пяти вольтной Arduino необходимо понизить логическое напряжение до 3В.


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

Подключение:
Подключение не сложено и так как мы используем программный SPI, можно использовать любые цифровые контакты Arduino. В примере выводы CLK, DIN, DC, CE и RST от дисплея подключаем в выводам Arduino от 7 до 3. Так как дисплей не льзя подключать напрямую к Arduino, воспользуемся самым простым способом, добавим резисторы 10 кОм между выводами CLK, DIN, D/C и RST и резистор 1 кОм между контактами CE. А вывод подсветки (BL) подключен к 3,3 В через токоограничивающий резистор 330 Ом.





Программа:
Теперь запускаем среду разработку Arduino IDE и загружаем скетч в контроллер.

Читайте также: