U8glib и st7920
- Войдите на сайт для отправки комментариев
Чт, 27/04/2017 - 21:20
Господа, пожалуйста ткните носом где можно изучить как вывести день недели в ниже приведенном скетче по центру экрана, либо помогите подправить скетч.
[code]
//Подключение библиотек
#include <U8glib.h>
#include "my10x14rus.h"
#include <Wire.h>
#include "DS3231.h"
U8GLIB_ST7920_128X64 u8g(6, 5, 4, U8G_PIN_NONE);
// SCK(6)-E(6), MOSI(5)-R/W(5),CS(4)-RS(4),
int posicaom = 0;
int posicaoh = 0;
int posicaos = 0;
DS3231 RTC; //Создание объекта DS3231
char* weekDay[] = {
"ВОСКРЕСЕНЬЕ", "ПОНЕДЕЛЬНИК", "ВТОРНИК", "СРЕДА", "ЧЕТВЕРГ", "ПЯТНИЦА", "СУББОТА" }; //Создание массива дней недели
//Создание переменной типа DateTime для задания даты в формате:
//год, месяц, день, час, минута, секунда и день недели (от 0 - воскресенье до 6 - суббота)
//DateTime dt(2016, 8, 22, 16, 10, 0, 1);
void setup ()
{
//delay(300);
analogWrite(9, 133); // шим яркость LCD 9 pin
u8g.begin(); // старт дисплея
Serial.begin(9600); //инициализация Serial-порта
Wire.begin(); //инициализация библиотеки Wire
RTC.begin(); //инициализация часов
//RTC.adjust(dt); //Задание даты-времени так как она задана в переменной dt
u8g.setRot180(); // переворачиваем дисплей если надо
}
void loop ()
{
DateTime now = RTC.now(); //получение текущей даты и времени
//вывод полученного года
Serial.print(now.year(), DEC);
Serial.print('/');
//вывод месяца
Serial.print(now.month(), DEC);
Serial.print('/');
//дня
Serial.print(now.date(), DEC);
Serial.print(' ');
//часа
Serial.print(now.hour(), DEC);
Serial.print(':');
//минут
Serial.print(now.minute(), DEC);
Serial.print(':');
//секунд
Serial.print(now.second(), DEC);
Serial.println();
//дня недели
Serial.print(weekDay[now.dayOfWeek()]);
Serial.println();
//delay(1000); //задержка на 1 сек
RTC.convertTemperature(); //конвертация текущей температуры в регистрах
Serial.print(RTC.getTemperature()); //чтение регистров и вывод полученной температуры
Serial.println(" C");
delay(100); //задержка на 1 сек
u8g.firstPage();
do
{
//u8g.drawStr(2, 10, "РУКОЖОПОСТЬ"); // выведет надпись
u8g.setFont(my10x14rus); // Выбор шрифта
u8g.setPrintPos(7, 14);
u8g.print(now.date());
u8g.drawStr( 35, 14, "/");
u8g.setPrintPos(45, 14);
u8g.print(now.month());
u8g.drawStr( 65, 14, "/");
u8g.setPrintPos(75, 14);
u8g.print(now.year());
//Mostra hora e minutos
//u8g.setPrintPos(75,64);
//u8g.print(RTC.getTemperature());
//u8g.setColorIndex(0);
//u8g.drawRBox(3, 4, 62, 21,2);
//u8g.setColorIndex(0);
u8g.setFont(u8g_font_fub20);
u8g.drawStr(35,39,":");
//Acerta a posicao do digito caso a hora
if (now.hour() < 10)
{
u8g.drawStr(3,42,"0");
posicaoh = 21;
}
else posicaoh = 3;
u8g.setPrintPos(posicaoh, 42);
u8g.print(now.hour());
//Acerta a posicao do digito caso o minuto
if (now.minute() < 10)
{
u8g.drawStr(48,42,"0");
posicaom = 66;
}
else posicaom = 48;
u8g.setPrintPos(posicaom,42);
u8g.print(now.minute());
u8g.drawStr(80,39,":");
//Acerta a posicao do digito caso o second
if (now.second() < 10)
{
u8g.drawStr(93,42,"0");
posicaos = 111;
}
else posicaos = 93;
u8g.setPrintPos(posicaos,42);
u8g.print(now.second());
//u8g.setColorIndex(1);
u8g.setFont(my10x14rus);
u8g.setPrintPos(10, 64);
u8g.print(weekDay[now.dayOfWeek()-1]);
}
while (u8g.nextPage());
}
[/code]