Arduino, модуль Nokia 5110 LCD і будь-яка картинка



Напевно, у мене, як і у всіх Arduino-будівельників, з'явилася якась безглузда ідея в голові. Замовив у Китаї всі необхідні деталі. Чекати довелося дуже довго, але тут раніше терміну був доставлений клон плати Arduino Uno і LCD-дисплей Nokia 5110. Так як до цього з електронікою і програмуванням я був не знайомий, вирішив не втрачати час дарма і почав вчитися виводити інформацію на даний модуль.

Першим ділом я загуглил і потрапив на публікацію «Arduino, модуль Nokia 5110 LCD і кирилиця» від автора Shrim. І тут я зрозумів, що все, що раніше задумав, буде не так вже й просто зробити.

З кирилицею я розібрався, там все просто, не буду копіпаст минулий пост, а от з картинками дійсно проблема. Стоїть завдання: потрібно намалювати картинку і залити її на дисплей. Зіткнувся з першою проблемою, зайшов у середу програмування Arduino я побачив, що там немає такої штуки як «Вставити Зображення», а потрібно картинку записати певним кодом hex системі числення. Знайшов кілька редакторів, але не тут то було. Картинка адекватно не відображається. Я почав шукати проблеми що може бути.

Методом купою експериментів, спроб і проб вийшов алгоритм яким я з вами поділюся:

1) Потрібно отримати саму куртинку, в чорно-білому форматі.з розширенням bmp 84 х 48 пікселів.
Зробити це можна купою способами майже у кожному графічному редакторі є функція «Зберегти як» де вказуємо необхідні параметри.
Я робив corelDRAW. Отримуємо щось схоже. Потрібно уточнити, що ім'я картинки обов'язково має збережено латинською розкладкою клавіатури, так як наступна програма її не зможе відкрити.

image

2) Якщо потрібно, можна змінити картинку в paint, як не дивно, там є кілька простих і цікавих інструментів.



3) За допомогою GLCD Tools отримуємо hex-код картинки.

image

4) Вставляємо цей код у програмний код Arduino і заливаємо на плату:

// SCK - Pin 8
// MOSI - Pin 9
// DC - Pin 10
// RST - Pin 11
// CS - Pin 12
//
#include <LCD5110_Graph.h>

LCD5110 myGLCD(8,9,10,11,12);

extern uint8_t OKO[];

float y;
uint8_t* bm;
int pacy;

void setup()
{
myGLCD.InitLCD();
}

void loop()
{
myGLCD.clrScr();
myGLCD.drawBitmap(0, 0, OKO, 84, 48);
myGLCD.update();

delay(2000);
}


#include <avr/pgmspace.h>

const uint8_t OKO[] PROGMEM={

//Скопійований hex-код GLCD tools

};


image

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.