Vladimir761
New member
Всем привет!
Хочу поделиться наработкой. Результат вечернего копания в сети - часики на дешевом дисплее Nokia 5110 с русификацией и Esp8266 в качестве мозга.
Перво-наперво, я воспользовался с темкой с этого форума, чтобы подружить экранчик с еспшкой. Там я скачал модифицированную под есп библиотеку, которая рельно работает.
Помимо стандартной для такого комплекта библиотеки Adafruit GFX, там имеется нужная Adafruit PCD8544 Nokia 5110 LCD library с примером pcdtest, в котором помимо всего хорошо разжевана распиновка подключения экрана к микроконтроллеру
Когда тест прогнан, приступаем к русификации библиотеки. Причем русифицируется сама библиотека Adafruit GFX. Таким образом, русифицируются все экраны, работа которых основана на этой библиотеке.
Спасибо форуму, подарившему нам русификацию!
План русификации таков:
Сначала качаем авторский русификатор utf8rus
Инструкция по русификации Adafruit-GFX:
- скачиваем архив utf8rus2.zip по приведённой выше ссылке;
- заменяем файл glcdfont.c в Adafruit-GFX;
- функцию utf8rus() добавляем в скетч, или в виде отдельного файла utf8rus.ino копируем в каталог скетча (как и сделано в примере);
- смотрим примеры OledRusTest и OledSymbolTest.
Здесь следует отметить, что не совсем сработала русификация. Причина такова, что с момента написания автором функции русификатора, библиотека Adafruit-GFX была модернизирована. Чтобы все исправить, достаточно добавить всего одну строчку :
Далее. После русификации надо было превратить экранчик в часы. Для этого пришлось распотрошить модный ныне скетч прогноза погоды для есп и мелкого олед - дисплея. Изначально я и стал заморачиваться с Nokia 5110, чтобы вставить его вместо этой мелюзги:
Нокификация данного проекта предстоит еще.
Действуя по авторской инструкции, я добыл скетч с кодом, который и был разобран на органы.
Ну вот, собственно, что получилось:
Не забываем, что этот скетч использует дополнительные файлы и состоит не из одной вкладки. Качаем архив с папкой скетча. Это уже как раз то, что накропал я на базе приведенных выше первоисточников.
У меня почему-то после перепрошивки не соединялся вайфай, что не решалось кнопкой ресет на еспшке, надо было полностью обесточить и снова запитать микроконтроллер.
Чтобы запилить все это, я сделал группу в вк, куда скидывал ссылки на полезные страницы. Так же буду делать и в будущем. Так что не стесняемся, присоединяемся к сообществу Ардуйня
Хочу поделиться наработкой. Результат вечернего копания в сети - часики на дешевом дисплее Nokia 5110 с русификацией и Esp8266 в качестве мозга.
Перво-наперво, я воспользовался с темкой с этого форума, чтобы подружить экранчик с еспшкой. Там я скачал модифицированную под есп библиотеку, которая рельно работает.
Помимо стандартной для такого комплекта библиотеки Adafruit GFX, там имеется нужная Adafruit PCD8544 Nokia 5110 LCD library с примером pcdtest, в котором помимо всего хорошо разжевана распиновка подключения экрана к микроконтроллеру
Код:
/******************************************************************
== Connection ==
USB TTL Huzzah Nokia 5110 Description
ESP8266 PCD8544
GND GND Ground
3V VCC 3.3V from Huzzah to display
14 CLK Output from ESP SPI clock
13 DIN Output from ESP SPI MOSI to display data input
12 D/C Output from display data/command to ESP
#5 CS Output from ESP to chip select/enable display
#4 RST Output from ESP to reset display
LED 3.3V to turn backlight on
******************************************************************/
Когда тест прогнан, приступаем к русификации библиотеки. Причем русифицируется сама библиотека Adafruit GFX. Таким образом, русифицируются все экраны, работа которых основана на этой библиотеке.
Спасибо форуму, подарившему нам русификацию!
План русификации таков:
Сначала качаем авторский русификатор utf8rus
Инструкция по русификации Adafruit-GFX:
- скачиваем архив utf8rus2.zip по приведённой выше ссылке;
- заменяем файл glcdfont.c в Adafruit-GFX;
- функцию utf8rus() добавляем в скетч, или в виде отдельного файла utf8rus.ino копируем в каталог скетча (как и сделано в примере);
- смотрим примеры OledRusTest и OledSymbolTest.
Здесь следует отметить, что не совсем сработала русификация. Причина такова, что с момента написания автором функции русификатора, библиотека Adafruit-GFX была модернизирована. Чтобы все исправить, достаточно добавить всего одну строчку :
Результат налицо:Для того, чтобы в новой библиотеке символ 0xB0 (=176) отображался (в кодировке Windows-1251 ему соответствует символ градуса) нужно в начале скетча (после инициализации дисплея) применить функцию cp437() с аргументом true:
display.cp437(true);
Далее. После русификации надо было превратить экранчик в часы. Для этого пришлось распотрошить модный ныне скетч прогноза погоды для есп и мелкого олед - дисплея. Изначально я и стал заморачиваться с Nokia 5110, чтобы вставить его вместо этой мелюзги:
Нокификация данного проекта предстоит еще.
Действуя по авторской инструкции, я добыл скетч с кодом, который и был разобран на органы.
Ну вот, собственно, что получилось:
Код:
/
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <ESP8266WiFi.h>
#include "Wire.h"
#include "TimeClient.h"
Adafruit_PCD8544 display = Adafruit_PCD8544(14, 13, 12, 5, 4);
float utcOffset = 4; // enter your UTC
TimeClient timeClient(utcOffset);
String ssid = "Tenda";
int clockDelay = 1000 ; // clock update period
int updateDelay = 30*60*1000 ; // time server verify period min*sec*millis
unsigned long clockUpdate = 0 ; //
unsigned long timeUpdate = 0 ; //
void syncPrint () ;
void timePrint ();
void setup() {
Serial.begin(9600);
Serial.println();
Serial.println();
// initialize dispaly
display.begin();
// init done
display.cp437(true);
// you can change the contrast around to adapt the display
// for the best viewing!
display.setContrast(50);
/* display.display(); // show splashscreen
delay(2000);
display.clearDisplay(); // clears the screen and buffer
*/
WiFi.begin("Tenda", "12345678");
display.setTextColor(BLACK);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
display.setTextSize(1);
display.clearDisplay();
display.setCursor(0,0);
display.print(utf8rus("Соединяем х"));
display.display();
delay(250);
Serial.print(".");
display.clearDisplay();
display.setCursor(0,0);
display.print(utf8rus("Соединяем +"));
display.display();
}
display.clearDisplay();
display.setCursor(0,0);
display.print(utf8rus("Ура!!!"));
display.setCursor(0,10);
display.print(utf8rus("Мы в сети:"));
display.setCursor(0,20);
display.print(ssid);
display.display();
delay (2000);
clockUpdate = millis () ; //
timeUpdate = millis () ; //
timeClient.updateTime();
}
void loop () {
unsigned long currentMillis = millis();
if ((currentMillis - timeUpdate) < 3000){
syncPrint ();
}
if ((currentMillis - timeUpdate) > updateDelay) {
timeClient.updateTime();
timeUpdate = millis ();
}
if ((currentMillis - clockUpdate) >= clockDelay ) {
timePrint ();
clockUpdate = millis ();
}
display.display();
}
void timePrint () {
// String time = timeClient.getFormattedTime();
String H = timeClient.getHours();
String M = timeClient.getMinutes();
String S = timeClient.getSeconds();
display.clearDisplay();
display.setCursor(1,24);
// display.print(time);
display.setTextSize(3);
display.print(H);
// display.setTextSize(2);
// display.print("-");
display.setCursor(47,24);
display.setTextSize(3);
display.print(M);
display.setTextSize(1);
display.setCursor(35,24);
display.print(S);
display.display ();
}
void syncPrint () {
// display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.print(utf8rus("Сверим часы с"));
display.setCursor(0,8);
display.print("time.nist.gov");
display.display ();
}
У меня почему-то после перепрошивки не соединялся вайфай, что не решалось кнопкой ресет на еспшке, надо было полностью обесточить и снова запитать микроконтроллер.
Чтобы запилить все это, я сделал группу в вк, куда скидывал ссылки на полезные страницы. Так же буду делать и в будущем. Так что не стесняемся, присоединяемся к сообществу Ардуйня
Последнее редактирование: