Часы DS1307 и Display Nokia 3310

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

Всем доброго времени суток! Решил собрать часы реального времени DS1307 на дисплеи Nokia 3310. До этого подключал часы к дисплею 16х2 все работало нормально. Всё подключил написал скетч (не сам, а с помощью гугла) по идеи все должно работать. Но почему то у меня вместо времени высвечивается цветочек. Что уже только не пробовал менять в коде, но не где нет этого цветочка в коде,а он показывает. Часы подключаю на пины А1, А0. Дисплей D3-D7. Ниже фото и код.

#include <DS1307.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
DS1307 rtc(A1,A0);
Time t;

void setup() {
  rtc.halt(false);
  display.begin();
  display.setContrast(60);
  display.cp437(true);
  rtc.setDOW(1);
  rtc.setSQWRate(SQW_RATE_1);
  rtc.enableSQW(true);
}

void loop() {
  t = rtc.getTime();
  display.setTextSize(2);
  display.setCursor(10, 0);
  if (t.hour < 10) {
    display.print("0");
    display.setCursor(22, 0);
  }
  display.print(t.hour);
  display.setCursor(38, -3);
  display.print("_");
  display.setCursor(52, 0);
  if (t.min < 10) {
    display.print("0");
    display.setCursor(64, 0);
  }
  display.print(t.min);
  display.setTextSize(1);
  display.setCursor(37, 0);
  if (t.sec < 10) {
    display.print("0");
    display.setCursor(43, 0);
  }
  display.print(t.sec);
  display.setCursor(13, 16);
  delay (1000);
  

}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MAkSQWI пишет:
вместо времени высвечивается цветочек.
Скетч, который скачали блондинка писала?

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

ЕвгенийП пишет:

MAkSQWI пишет:
вместо времени высвечивается цветочек.
Скетч, который скачали блондинка писала?

Нет, я писал с нескольких примеров. А что там не так?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Самого вывода на экран-то и нет. Потеряли display.display(); Вставьте перед delay(1000)

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MAkSQWI пишет:
А что там не так?
Ну, как, что не так? Вы ж сами написали
MAkSQWI пишет:
вместо времени высвечивается цветочек.
Вот я и подумал, что без блондинки не обошлось :)

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Ада, вроде, не блондинка... На фотках то с каким-то синими волосами, то с зелеными...

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

А теперь вот такая проблема. Цифры сливаются не обновлются.

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

kalapanga пишет:

Самого вывода на экран-то и нет. Потеряли display.display(); Вставьте перед delay(1000)

 

Помоги пожалуйста с такой проблемой. Фото в предыдущем посте. Цифры просто сливаются, идёт, как сохранение предыдущей цифры на выводе на дисплей.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

MAkSQWI пишет:
kalapanga пишет:

Самого вывода на экран-то и нет. Потеряли display.display(); Вставьте перед delay(1000)

 

Помоги пожалуйста с такой проблемой. Фото в предыдущем посте. Цифры просто сливаются, идёт, как сохранение предыдущей цифры на выводе на дисплей.

Чистить экранный буфер Пушкин А.С. будет?

Перед любой записью в дисплей - display.clearDisplay(); 

После всех записей в экранный буфер - display.display();

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

MAkSQWI пишет:
kalapanga пишет:

Самого вывода на экран-то и нет. Потеряли display.display(); Вставьте перед delay(1000)

 

Помоги пожалуйста с такой проблемой. Фото в предыдущем посте. Цифры просто сливаются, идёт, как сохранение предыдущей цифры на выводе на дисплей.

Да не в коде дело . Дисплей у вас китайский ! И разрешение у него отличается от оригинала .

Вот еще для общего развития 

Либо меняйте дисплей , либо пишите свою библиотеку под него . 

 

 

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

Огромное спасибо! Хоть кто-то помогает,а не обсирает. Понятное дело, учусь только. Но всё равно остались вопросы. Если не сложно ответьте пожалуйста. НЕ меняеться день недели. И почему то не поддерживает русский, хотя менял файл в библиотеки для поддержки русского языка. И последний вопрос, как избавиться от артифактов на самой нижней строчке дисплея? На фото видно.

#include <DS1307.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

//#define SCK 3
//#define Sdin 4
//#define D/C 5
//#define CS 6
//#define RTS 7

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
DS1307 rtc(A1,A0);
Time t;

void setup() {
  rtc.halt(false);
  display.begin();
  display.clearDisplay();
  display.setContrast(60);
  display.cp437(true);
//  rtc.setTime(13, 28, 0);
  rtc.setDOW(1);
  rtc.setSQWRate(SQW_RATE_1);
  rtc.enableSQW(true);
}

void loop() {
  t = rtc.getTime();
  display.setTextSize(2);
  display.setCursor(10, 5);
  if (t.hour < 10) {
    display.print("0");
    display.setCursor(22, 5);
  }
  display.print(t.hour);
  display.setCursor(38, 2);
  display.print("_");
  display.setCursor(52, 5);
  if (t.min < 10) {
    display.print("0");
    display.setCursor(64, 5);
  }
  display.print(t.min);
  display.setTextSize(1);
  display.setCursor(37, 5);
  if (t.sec < 10) {
    display.print("0");
    display.setCursor(43, 5);
  }
  display.print(t.sec);
  display.setCursor(13, 23);
  display.println(rtc.getDateStr(FORMAT_LONG));
  display.setCursor(25, 31);
  display.print(rtc.getDOWStr());
  display.setTextSize(1);
  display.setCursor(4, 38);
  display.println("Time is money");
  display.display();
  display.clearDisplay();
  delay (1000);  

}

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

Спасибо большое за ссылку, но я её уже просматривал.

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

MAkSQWI пишет:

Спасибо большое за ссылку, но я её уже просматривал.

И пользуетесь библиотекой от другого дисплея .

Либо меняйте дисплей , либо пишите свою библиотеку под него . 

Либо ищите под кит дисплей - она есть и работает .

UPD. 

Завтра постараюсь найти библиотеку и тестовый скетч для кита . Я таким пользовался , должен быть у меня.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

MAkSQWI пишет:

 НЕ меняеться день недели. 

Как только в setup закомментируете строчку

rtc.setDOW(1)

сразу меняться начнёт :)

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

DIYMan пишет:

MAkSQWI пишет:

 НЕ меняеться день недели. 

Как только в setup закомментируете строчку

rtc.setDOW(1)

сразу меняться начнёт :)

Но артефакты снизу, и обрезание ))  сверху останется !

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

Так есть у меня такая строчка.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

MAkSQWI пишет:

Так есть у меня такая строчка.

Так закомментируйте её, а то получается, что при старте МК вы КАЖДЫЙ раз день недели в 1 устанавливаете. Может, я по-китайски предыдущий пост писал?

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

Простите не сразу понял. Теперь дошло.

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

DIYMan пишет:

MAkSQWI пишет:

Так есть у меня такая строчка.

Так закомментируйте её, а то получается, что при старте МК вы КАЖДЫЙ раз день недели в 1 устанавливаете. Может, я по-китайски предыдущий пост писал?

 

А что делать с русским языком? Делал, как в этой теме http://arduino.ru/forum/proekty/moi-proekt-na-5110

Хотя говорю же, что менял файл для поддержки русского языка.

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

MAkSQWI пишет:

DIYMan пишет:

MAkSQWI пишет:

Так есть у меня такая строчка.

Так закомментируйте её, а то получается, что при старте МК вы КАЖДЫЙ раз день недели в 1 устанавливаете. Может, я по-китайски предыдущий пост писал?

 

А что делать с русским языком? Делал, как в этой теме http://arduino.ru/forum/proekty/moi-proekt-na-5110

Хотя говорю же, что менял файл для поддержки русского языка.

 

Так русский я победил,а вот день недели кракозяблами высвечивает.

MAkSQWI
Offline
Зарегистрирован: 12.12.2017

Так всё разобрался.Всем спасибо за помощь. Может кто будет повторять проэкт, те кто будет учиться вот полный скетч программы так всякий случай.

#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <DS1307.h>
#include <Adafruit_PCD8544.h>

//#define SCK 3
//#define Sdin 4
//#define D/C 5
//#define CS 6
//#define RTS 7

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
DS1307 rtc(A1,A0);
Time t;

char * days[] = {
   "Bоcкресенье", "Понедельник", "Bторник", "Cpeдa", "Четверг", "Пятница", "Cуббота"
};

void setup() {
  rtc.halt(false);
  display.begin();
  display.clearDisplay();
  display.setContrast(60);
  display.cp437(true);
//  rtc.setTime(13, 28, 0);
//  rtc.setDOW(2);
  rtc.setSQWRate(SQW_RATE_1);
  rtc.enableSQW(true);
}

void loop() {
  t = rtc.getTime();
  display.setTextSize(2);
  display.setCursor(10, 5);
  if (t.hour < 10) {
    display.print("0");
    display.setCursor(22, 5);
  }
  display.print(t.hour);
  display.setCursor(38, 2);
  display.print("_");
  display.setCursor(52, 5);
  if (t.min < 10) {
    display.print("0");
    display.setCursor(64, 5);
  }
  display.print(t.min);
  display.setTextSize(1);
  display.setCursor(37, 5);
  if (t.sec < 10) {
    display.print("0");
    display.setCursor(43, 5);
  }
  display.print(t.sec);
  display.setCursor(13, 23);
  display.println(rtc.getDateStr(FORMAT_LONG));
  display.setCursor(0, 31);
  display.print(utf8rus(days[t.dow]));
  display.setTextSize(1);
  display.setCursor(4, 38);
  display.println(utf8rus("Время деньги"));
  display.display();
  display.clearDisplay();
  delay (1000);  

}

/* Recode russian fonts from UTF-8 to Windows-1251 */
String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };

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

  while (i < k) {
    n = source[i]; i++;

    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}