U8glib и st7920

Нет ответов
sergey_s
Offline
Зарегистрирован: 26.03.2017

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

[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]