Подключить Pole Display к ардуино.

Мужик из полиуретана
Offline
Зарегистрирован: 12.09.2015

Достался мне вот такого типа девайс:

на rs-232c

как сподручнее будет подключить его к ардуино? 

внутри есть:

атмел ат89с 

еепром Winbond w27c512

какой-то контроллер Winbond w78c032c

ls245

ls373

ly66256sl

сам дисплей идентифицировать не удалось, надпись на плате RGVFD9CB1010

 

Мужик из полиуретана
Offline
Зарегистрирован: 12.09.2015

ЗЫ - и как проверить - живой ли сам дисплей?

подключается он через rs232c (в ножке), питание 12 вольт, а с ножки до дисплея уже идет обычный rj-45

Radjah
Offline
Зарегистрирован: 06.08.2014

У меня есть девайс. Там RS232 выведен на miniUSB, при этом USB там и не пахнет.

Подрубаешь через USB-TTL-MAX3232 и пихаешь в порт всякое. По уму на него надо даташит найти, чтобы скорость обмена не угадывать.

Мужик из полиуретана
Offline
Зарегистрирован: 12.09.2015

Radjah пишет:

У меня есть девайс. Там RS232 выведен на miniUSB, при этом USB там и не пахнет.

Подрубаешь через USB-TTL-MAX3232 и пихаешь в порт всякое. По уму на него надо даташит найти, чтобы скорость обмена не угадывать.

А если обойти родной rs232 и at89c и подрубаться к нему так же, как, например, и к 1602? 

Radjah
Offline
Зарегистрирован: 06.08.2014

Один хрен даташит на дисплей нужен.

Мужик из полиуретана
Offline
Зарегистрирован: 12.09.2015

Поковырял этот дисплей, даташит на него так и не обнаружил, при попытке подключения через ардуину и SoftwareSerial в лучшем случае выдает рандомные кракозябры поверх демо-режима.

Сам дисплей по размерам и ТТХ похож на этот:

http://www.noritake-itron.com/NewWeb/Glass/specs/DN2029DB.pdf

По крайней мере, на нем проглядывается норитэйковский адрес, конкретной модели не видно.

на плате фигурирует RG VFD9CB1010 - по этим данным даташита найти тоже не получилось %)

Нашел мануал вроде бы как на него - http://www.firich-rus.ru/doc/Custom%20Displ.ay%20VFD%20Manual.pdf?PHPSESSID=6515184a31cd64eb860b738c5eed165a

но в нем тоже полезного немного

Мужик из полиуретана
Offline
Зарегистрирован: 12.09.2015

С помощью Штрих-м'ской программы и дров получилось его проверить c компьютера, через ком-порт работает.

Пока все еще непонятно как заставить ее слушать ардуину через SoftwareSerial, в планах - сделать на нем часы\термометр\гигрометр.

diana221323
Offline
Зарегистрирован: 20.10.2016

кому надо схема, прошивка, сервис мануал- вот тут http://monitor.espec.ws/section9/topic180280.html

а вот тут про подключение этого дисплея к компу http://www.diary.ru/~taren/p188328827.htm?oam

lavr
Offline
Зарегистрирован: 03.05.2017

Дратути!

Удалось ли кому сделать на этом дисплейчике что нибудь стоящее? Например, https://pikabu.ru/story/tekstovyie_chasyi_quotvremya_vyipitquot_5396869

lavr
Offline
Зарегистрирован: 03.05.2017

Мне удалось :)

rsasha
Offline
Зарегистрирован: 21.02.2018

[quote=lavr]

Мне удалось :)

[/]

Поделитесь информацией. Раздобыл такой экран охота тоже приспособить. 

lavr
Offline
Зарегистрирован: 03.05.2017

Ладно, попробуем.

Выше есть отсыл к схеме дисплея. Находим Rx Tx. У меня к дисплею идет 5 проводов: +12В, земля, Rx, Tx, и еще раз земля.

lavr
Offline
Зарегистрирован: 03.05.2017

Я использую ардуино про мини 5В. 

SoftwareSerial mySerial(11, 10); // RX, TX

Надеюсь, Вы не начинающий, как я?

lavr
Offline
Зарегистрирован: 03.05.2017
mySerial.println("     \215\216\213\234 \227\200\221\216\202     ");

эта строка выводит надпись "ноль часов", т.е 215 это н, 216_ это о, а- это 200

lavr
Offline
Зарегистрирован: 03.05.2017

Я использую часы реального времени DS1307.

mixa10
Offline
Зарегистрирован: 11.10.2018

Приветствую, не могли бы вы поделится более подробно с подключением и загрузкой данного ИВЛ? За ранее спасибо.

mixa10
Offline
Зарегистрирован: 11.10.2018

lavr пишет:
 

Мне удалось :)

Приветствую, не могли бы вы поделится более подробно с подключением и загрузкой данного ИВЛ? За ранее спасибо.

rsa
Offline
Зарегистрирован: 16.10.2018

lavr пишет:

Мне удалось :)

Не могли бы поделиться скетчем? Классные часы. Тоже имеется подобный дисплей и огромное желание повторить.

lavr
Offline
Зарегистрирован: 03.05.2017
#include <RTClib.h> 
#include <SoftwareSerial.h>
#include <Wire.h>
RTC_DS1307 RTC;

// Массив со словами 
char* myNumeral[]={"\215\216\213\234",  // ноль - 0
"\216\204\215\200",  //одна - 1
"\204\202\205", //две - 2
"\222\220\210",  //три - 3
"\227\205\222\233\220\205",  //четыре - 4
"\217\237\222\234",  //пять - 5
"\230\205\221\222\234", //шесть - 6
"\221\205\214\234",  //семь - 7
"\202\216\221\205\214\234", //восемь - 8
"\204\205\202\237\222\234", //девять - 9
"\204\205\221\237\222\234", // десять - 10
"\216\204\210\215\215\200\204\226\200\222\234",  //одиннадцать - 11
"\204\202\205\215\200\204\226\200\222\234", // двенадцать - 12
"\222\220\210\215\200\204\226\200\222\234", //тринадцать - 13
"\227\205\222\233\220\215\200\204\226\200\222\234", //четырнадцать - 14
"\217\237\222\215\200\204\226\200\222\234",  // пятнадцать - 15
"\230\205\221\222\215\200\204\226\200\222\234", //шестнадцать - 16
"\221\205\214\215\200\204\226\200\222\234", // семнадцать - 17
"\202\216\221\205\214\215\200\204\226\200\222\234", //восемнадцать - 18
"\204\205\202\237\222\215\200\204\226\200\222\234", //девятнадцать - 19
"\204\202\200\204\226\200\222\234", // двадцать - 20
"\222\220\210\204\226\200\222\234", // тридцать - 21
"\221\216\220\216\212", //сорок - 22
"\217\237\222\234\204\205\221\237\222", //пятьдесят - 23

"\216\204\210\215", // один - 24
"\204\202\200", // два - 25

"\227\200\221\216\202", // часов - 26
"\227\200\221", // час - 27
"\227\200\221\200", // часа - 28

"\214\210\215\223\222", // минут - 29
"\214\210\215\223\222\200", // минута - 30
"\214\210\215\223\222\233", // минуты - 31
"\214\210\215", // мин - 32
"\217\216\215\205\204\205\213\234\215\210\212", // понедельник - 33
"\202\222\216\220\215\210\212",  // вторник - 34
"\221\220\205\204\200",  // среда - 35
"\227\205\222\202\205\220\203",  // четверг - 36
"\217\237\222\215\210\226\200",  //пятница - 37
"\221\223\201\201\216\222\200",  // суббота - 38
"\202\216\221\212\220\205\221\205\215\234\205",  // воскресенье - 39
"\237\215\202\200\220\237", // января - 40
"\224\205\202\220\200\213\237", // февраля - 41
"\214\200\220\222\200", // марта - 42
"\200\217\220\205\213\237", // апреля - 43
"\214\200\237", // мая - 44
"\210\236\215\237", // июня - 45
"\210\236\213\237", // июля - 46
"\200\202\203\223\221\222\200", // августа - 47
"\221\205\215\222\237\201\220\237", // сентября - 48
"\216\212\222\237\201\220\237", // октября - 49
"\215\216\237\201\220\237", // ноября - 50
"\204\205\212\200\201\220\237", // декабря - 51
"\203\216\204" // год - 52

};


String stringOne, stringTwo, stringThree, stringFour, stringFive, stringSix, stringHour, stringMin,
        stringHourd,stringHourdd, stringMind,stringMindd, stringSecd, stringSecdd, stringPerd,
        stringDaty, stringVtor, stringdday,stringDatyd, stringddayy, stringdmonth, stringdmonthh, stringGod, stringGodn;  // эту фигню объявил для сборки времени словами из массива

SoftwareSerial mySerial(11, 10); // RX, TX

const int buttonPin = 2; // на второй вывод повесил кнопку выбора варианта отображения времени
const int buttonChplus = 3; // на третий вывод повесил кнопку коррентировки час+
const int buttonChminus = 4; // на четвертый вывод повесил кнопку коррентировки час-
const int buttonMinplus = 5; // на пятый вывод повесил кнопку коррентировки минуты+
const int buttonMinminus = 6; // на шестой вывод повесил кнопку коррентировки минуты-
const int buttonSeknol = 7; // на седьмой вывод повесил кнопку коррентировки секунды в ноль
const int buttonDispleysbros = 8; // на восьмой вывод повесил кнопку сброса дисплея
const int buttonCorrHour = 12; // на двенадцатом выводе переключатель корректировки час минута секунда
const int buttonCorrDay = 9; // на двенадцатом выводе переключатель корректировки дней месяца года

int den, mec, god, dday,agod,ygod,mgod; // для вычисления дня недели
int yar, mesyac, denec, chas, minuta, sekunda; // для коррентировки
int korrektwrem;   // коррекция ошибки часов реального времени
void setup()  
{
  // Инициализируем последовательный интерфейс и ждем открытия порта:
  Serial.begin(9600);
  while (!Serial) 
  {
    ; // ожидаем подключения к последовательному порту. Необходимо только для Leonardo  
  }
  
  Serial.println("Goodnight moon!");
    mySerial.begin(9600);

{
Serial.begin(57600);
Wire.begin();
RTC.begin();
//RTC.adjust(DateTime(2018, 2, 5, 19, 16, 0));  // задаём год/ месяц/ дата/ часы/ минуты/ секунды
}

{
  pinMode(buttonPin, INPUT);  //  вывод этот объявим входом для варианта отображения впемени
  pinMode(buttonChplus, INPUT);  //  и этот вывод объявим входом для корректироки час +
  pinMode(buttonChminus, INPUT);  //  и этот вывод объявим входом для корректировки час -
  pinMode(buttonMinplus, INPUT);  //  и этот вывод объявим входом для корректировки минута +
  pinMode(buttonMinminus, INPUT);  //  и этот вывод объявим входом для корректировки минута -
  pinMode(buttonSeknol, INPUT);  //  и этот вывод объявим входом для корректировки секунда в 0
  pinMode(buttonDispleysbros, INPUT);  //  и этот вывод объявим входом для сброса дисплея
  pinMode(buttonCorrHour, INPUT);  //  и этот вывод объявим входом для полодения тумблера коррекция времени часминсек
  pinMode(buttonCorrDay, INPUT);  //  и этот вывод объявим входом для полодения тумблера коррекция времени деньмесяцгод

}

}
 void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());


 // mySerial.print("\f"); // для тестирования
    
  DateTime now = RTC.now();

  
{
   yar = now.year();       // присваиваем переменным значения года
   mesyac = now.month();   // месяца
   denec = now.day();      // дня
   chas = now.hour();      // часа
   minuta = now.minute();  // минуты
   sekunda = now.second(); // и секунды
   
}

      int buttonStatehour = digitalRead(buttonCorrHour); // считываем состояние тумблера корректировки часминсек
      if (buttonStatehour == LOW)    // если низкая, корректируем время часминсек

       {int buttonStatehp = digitalRead(buttonChplus); //настройка времени кнопками    + час
       if (buttonStatehp == LOW){
       chas = chas + 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatehm = digitalRead(buttonChminus); //настройка времени кнопками    - час
       if (buttonStatehm == LOW){
       chas = chas - 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatemp = digitalRead(buttonMinplus); //настройка времени кнопками    + минуты
       if (buttonStatemp == LOW){
       minuta = minuta + 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatemm = digitalRead(buttonMinminus); //настройка времени кнопками    - минуты
       if (buttonStatemm == LOW){
       minuta = minuta - 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatesn = digitalRead(buttonSeknol); //настройка времени кнопками    секунда в ноль
       if (buttonStatesn == LOW){
       sekunda = 0;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStateds = digitalRead(buttonDispleysbros); //сбросить дисплей
       if (buttonStateds == LOW){
       mySerial.print("\f");
       delay(50);
       }
       }



       

      int buttonStateday = digitalRead(buttonCorrDay); // считываем состояние тумблера корректировки деньмесяцгод
      if (buttonStateday == LOW)    // если низкая, можно корректировать время деньмесяцгод

       {
       int buttonStatehp = digitalRead(buttonChplus); //настройка времени кнопками    + год
       if (buttonStatehp == LOW){
       yar = yar + 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatehm = digitalRead(buttonChminus); //настройка времени кнопками    - год
       if (buttonStatehm == LOW){
       yar = yar - 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatemp = digitalRead(buttonMinplus); //настройка времени кнопками    + день
       if (buttonStatemp == LOW){
       denec = denec + 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatemm = digitalRead(buttonMinminus); //настройка времени кнопками    - день
       if (buttonStatemm == LOW){
       denec = denec - 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStatesn = digitalRead(buttonSeknol); //настройка времени кнопками    + месяц
       if (buttonStatesn == LOW){
       mesyac = mesyac + 1;
       RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));
       delay(50);
       }

       int buttonStateds = digitalRead(buttonDispleysbros); //сбросить дисплей
       if (buttonStateds == LOW){
       mySerial.print("\f");
       delay(50);
       }
       
       }





       

         if (chas == 19 && minuta == 03 && sekunda == 30 && korrektwrem == 0 )   //  корректировка часов реального времени 
         { 
           sekunda = sekunda - 7; korrektwrem = korrektwrem + 1 ;RTC.adjust(DateTime(yar, mesyac, denec, chas, minuta, sekunda));  // на 7 секунд
             };

        if (chas == 19 && minuta == 03 && sekunda == 59 )
        {
           korrektwrem = 0; 
             }


  

  int buttonState = digitalRead(buttonPin); // считываем состояние кнопки
  if (buttonState == HIGH) {   // если высокая, время словами - иначе вся информация

  switch (now.hour()) {   //собираем первую строку

       case 0:  stringOne =  myNumeral[0]; stringThree =  myNumeral[26]; stringHour = "     " + stringOne + " " + stringThree + "     "; break;
       case 1:  stringOne =  myNumeral[24]; stringThree =  myNumeral[27]; stringHour = "      " + stringOne + " " + stringThree + "      ";break;
       case 3:  stringOne =  myNumeral[3]; stringThree =  myNumeral[28]; stringHour = "      " + stringOne + " " + stringThree + "      ";break;
       case 4:  stringOne =  myNumeral[4]; stringThree =  myNumeral[28]; stringHour = "    " + stringOne + " " + stringThree + "     ";break;
       case 5:  stringOne =  myNumeral[5]; stringThree =  myNumeral[26]; stringHour = "     " + stringOne + " " + stringThree + "     ";break;
       case 6:  stringOne =  myNumeral[6]; stringThree =  myNumeral[26]; stringHour = "    " + stringOne + " " + stringThree + "     ";break;
       case 7:  stringOne =  myNumeral[7]; stringThree =  myNumeral[26]; stringHour = "     " + stringOne + " " + stringThree + "     ";break;
       case 8:  stringOne =  myNumeral[8]; stringThree =  myNumeral[26]; stringHour = "    " + stringOne + " " + stringThree + "    ";break;
       case 9:  stringOne =  myNumeral[9]; stringThree =  myNumeral[26]; stringHour = "    " + stringOne + " " + stringThree + "    ";break;
       case 10:  stringOne =  myNumeral[10]; stringThree =  myNumeral[26]; stringHour = "     " + stringOne + " " + stringThree + "     ";break;
       case 11:  stringOne =  myNumeral[11]; stringThree =  myNumeral[26]; stringHour = " " + stringOne + " " + stringThree + "  ";break;
       case 12:  stringOne =  myNumeral[12]; stringThree =  myNumeral[26]; stringHour = "  " + stringOne + " " + stringThree + "  ";break; 
       case 13:  stringOne =  myNumeral[13]; stringThree =  myNumeral[26]; stringHour = "  " + stringOne + " " + stringThree + "  ";break;
       case 14:  stringOne =  myNumeral[14]; stringThree =  myNumeral[26]; stringHour = " " + stringOne + " " + stringThree + " ";break;
       case 15:  stringOne =  myNumeral[15]; stringThree =  myNumeral[26]; stringHour = "  " + stringOne + " " + stringThree + "  ";break;
       case 16:  stringOne =  myNumeral[16]; stringThree =  myNumeral[26]; stringHour = " " + stringOne + " " + stringThree + "  ";break;
       case 17:  stringOne =  myNumeral[17]; stringThree =  myNumeral[26]; stringHour = "  " + stringOne + " " + stringThree + "  ";break;
       case 18:  stringOne =  myNumeral[18]; stringThree =  myNumeral[26]; stringHour = " " + stringOne + " " + stringThree + " ";break;
       case 19:  stringOne =  myNumeral[19]; stringThree =  myNumeral[26]; stringHour = " " + stringOne + " " + stringThree + " ";break;
       case 20:  stringOne =  myNumeral[20]; stringThree =  myNumeral[26]; stringHour = "   " + stringOne + " " + stringThree + "   ";break;
       case 21:  stringOne =  myNumeral[20]; stringTwo =  myNumeral[24]; stringThree =  myNumeral[27]; stringHour = " " + stringOne + " " + stringTwo + " " + stringThree + "  ";break;
       case 22:  stringOne =  myNumeral[20]; stringTwo =  myNumeral[25]; stringThree =  myNumeral[28]; stringHour = " " + stringOne + " " + stringTwo + " " + stringThree + "  ";break;
       case 23:  stringOne =  myNumeral[20]; stringTwo =  myNumeral[3]; stringThree =  myNumeral[28]; stringHour = " " + stringOne + " " + stringTwo + " " + stringThree + "  ";break;
       }
        
  switch (now.minute()) {         // собираем вторую строку
   case 0:  stringFour =  myNumeral[0]; stringSix =  myNumeral[29]; stringMin = "\n     " + stringFour + " " + stringSix + "     ";  break;
    case 1:  stringFour =  myNumeral[1]; stringSix =  myNumeral[30]; stringMin = "\n    " + stringFour + " " + stringSix + "     ";  break;
    case 2:  stringFour =  myNumeral[2]; stringSix =  myNumeral[31]; stringMin = "\n     " + stringFour + " " + stringSix + "     ";  break;
    case 3:  stringFour =  myNumeral[3]; stringSix =  myNumeral[31]; stringMin = "\n     " + stringFour + " " + stringSix + "     ";  break;
    case 4:  stringFour =  myNumeral[4]; stringSix =  myNumeral[31]; stringMin = "\n   " + stringFour + " " + stringSix + "    ";  break;
    case 5:  stringFour =  myNumeral[5]; stringSix =  myNumeral[29]; stringMin = "\n     " + stringFour + " " + stringSix + "     ";  break;
    case 6:  stringFour =  myNumeral[6]; stringSix =  myNumeral[29]; stringMin = "\n    " + stringFour + " " + stringSix + "     ";  break;
    case 7:  stringFour =  myNumeral[7]; stringSix =  myNumeral[29]; stringMin = "\n     " + stringFour + " " + stringSix + "     ";  break;
    case 8:  stringFour =  myNumeral[8]; stringSix =  myNumeral[29]; stringMin = "\n    " + stringFour + " " + stringSix + "    ";  break;
    case 9:  stringFour =  myNumeral[9]; stringSix =  myNumeral[29]; stringMin = "\n    " + stringFour + " " + stringSix + "    ";  break;
    case 10:  stringFour =  myNumeral[10]; stringSix =  myNumeral[29]; stringMin = "\n    " + stringFour + " " + stringSix + "    ";  break;
    case 11:  stringFour =  myNumeral[11]; stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringSix + "  ";  break;
    case 12:  stringFour =  myNumeral[12]; stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringSix + "  ";  break;
    case 13:  stringFour =  myNumeral[13]; stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringSix + "  ";  break;
    case 14:  stringFour =  myNumeral[14]; stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringSix + "  ";  break;
    case 15:  stringFour =  myNumeral[15]; stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringSix + "  ";  break;
    case 16:  stringFour =  myNumeral[16]; stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringSix + "  ";  break;
    case 17:  stringFour =  myNumeral[17]; stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringSix + "  ";  break;
    case 18:  stringFour =  myNumeral[18]; stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringSix + " ";  break;
    case 19:  stringFour =  myNumeral[19]; stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringSix + " ";  break;
    case 20:  stringFour =  myNumeral[20]; stringSix =  myNumeral[29]; stringMin = "\n   " + stringFour + " " + stringSix + "   ";  break;
    case 21:  stringFour =  myNumeral[20]; stringFive =  myNumeral[1];stringSix =  myNumeral[30]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 22:  stringFour =  myNumeral[20]; stringFive =  myNumeral[2];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 23:  stringFour =  myNumeral[20]; stringFive =  myNumeral[3];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 24:  stringFour =  myNumeral[20]; stringFive =  myNumeral[4];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 25:  stringFour =  myNumeral[20]; stringFive =  myNumeral[5];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 26:  stringFour =  myNumeral[20]; stringFive =  myNumeral[6];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 27:  stringFour =  myNumeral[20]; stringFive =  myNumeral[7];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 28:  stringFour =  myNumeral[20]; stringFive =  myNumeral[8];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 29:  stringFour =  myNumeral[20]; stringFive =  myNumeral[9];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 30:  stringFour =  myNumeral[21]; stringSix =  myNumeral[29]; stringMin = "\n   " + stringFour + " " + stringSix + "   ";  break;
    case 31:  stringFour =  myNumeral[21]; stringFive =  myNumeral[1];stringSix =  myNumeral[30]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 32:  stringFour =  myNumeral[21]; stringFive =  myNumeral[2];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 33:  stringFour =  myNumeral[21]; stringFive =  myNumeral[3];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 34:  stringFour =  myNumeral[21]; stringFive =  myNumeral[4];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 35:  stringFour =  myNumeral[21]; stringFive =  myNumeral[5];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 36:  stringFour =  myNumeral[21]; stringFive =  myNumeral[6];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 37:  stringFour =  myNumeral[21]; stringFive =  myNumeral[7];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 38:  stringFour =  myNumeral[21]; stringFive =  myNumeral[8];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 39:  stringFour =  myNumeral[21]; stringFive =  myNumeral[9];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 40:  stringFour =  myNumeral[22]; stringSix =  myNumeral[29]; stringMin = "\n    " + stringFour + " " + stringSix + "     ";  break;
    case 41:  stringFour =  myNumeral[22]; stringFive =  myNumeral[1];stringSix =  myNumeral[30]; stringMin = "\n " + stringFour + " " + stringFive + " " + stringSix + "  ";  break;
    case 42:  stringFour =  myNumeral[22]; stringFive =  myNumeral[2];stringSix =  myNumeral[31]; stringMin = "\n  " + stringFour + " " + stringFive + " " + stringSix + "  ";  break;
    case 43:  stringFour =  myNumeral[22]; stringFive =  myNumeral[3];stringSix =  myNumeral[31]; stringMin = "\n  " + stringFour + " " + stringFive + " " + stringSix + "  ";  break;
    case 44:  stringFour =  myNumeral[22]; stringFive =  myNumeral[4];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 45:  stringFour =  myNumeral[22]; stringFive =  myNumeral[5];stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringFive + " " + stringSix + "  ";  break;
    case 46:  stringFour =  myNumeral[22]; stringFive =  myNumeral[6];stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringFive + " " + stringSix + "  ";  break;
    case 47:  stringFour =  myNumeral[22]; stringFive =  myNumeral[7];stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringFive + " " + stringSix + "  ";  break;
    case 48:  stringFour =  myNumeral[22]; stringFive =  myNumeral[8];stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 49:  stringFour =  myNumeral[22]; stringFive =  myNumeral[9];stringSix =  myNumeral[29]; stringMin = "\n " + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 50:  stringFour =  myNumeral[23]; stringSix =  myNumeral[29]; stringMin = "\n  " + stringFour + " " + stringSix + "   ";  break;
    case 51:  stringFour =  myNumeral[23]; stringFive =  myNumeral[1];stringSix =  myNumeral[32]; stringMin = "\n " + stringFour + " " + stringFive + " " + stringSix + " ";  break;
    case 52:  stringFour =  myNumeral[23]; stringFive =  myNumeral[2];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 53:  stringFour =  myNumeral[23]; stringFive =  myNumeral[3];stringSix =  myNumeral[31]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 54:  stringFour =  myNumeral[23]; stringFive =  myNumeral[4];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 55:  stringFour =  myNumeral[23]; stringFive =  myNumeral[5];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 56:  stringFour =  myNumeral[23]; stringFive =  myNumeral[6];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix  + " ";  break;
    case 57:  stringFour =  myNumeral[23]; stringFive =  myNumeral[7];stringSix =  myNumeral[29]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 58:  stringFour =  myNumeral[23]; stringFive =  myNumeral[8];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    case 59:  stringFour =  myNumeral[23]; stringFive =  myNumeral[9];stringSix =  myNumeral[32]; stringMin = "\n" + stringFour + " " + stringFive + " " + stringSix;  break;
    }

             
              mySerial.println(stringHour);   //печать первой строки
              mySerial.print(stringMin);      // печать второй строки
    delay(500);
  }
  else {         
           
           den = now.day();
           mec = now.month();
           god = now.year();
           agod = (14 - mec) / 12;
           ygod = god - agod;
           mgod = mec + 12 * agod - 2;           
           dday = ( den + ygod + (ygod / 4) - ( ygod / 100 ) + (ygod / 400 ) + (31 * mgod) / 12)  %7;               // вычисление дня недели
           //Serial.print(dday);
           
           
           stringHourdd = now.hour(); stringMindd = (now.minute());stringSecdd = now.second(), stringDatyd = now.day(), stringGod = now.year(), stringGodn = myNumeral[52]  ;
           
           switch (dday) {                                                                       // блок имени дня недели
           case 0:   stringdday = myNumeral[39]; break;
           case 1:   stringdday = myNumeral[33]; break;
           case 2:   stringdday = stringddayy + "    "; stringddayy =myNumeral[34]; break;
           case 3:   stringdday = stringddayy + "      "; stringddayy = myNumeral[35]; break;
           case 4:   stringdday = stringddayy + "    "; stringddayy = myNumeral[36]; break;
           case 5:   stringdday = stringddayy + "    "; stringddayy = myNumeral[37]; break;
           case 6:   stringdday = stringddayy + "    "; stringddayy = myNumeral[38]; break;
      }

           switch (now.month()) {                                                                  // блок имени месяца
           case 1:   stringdmonth = stringdmonthh + "   "; stringdmonthh = myNumeral[40]; break;
           case 2:   stringdmonth = stringdmonthh + "  "; stringdmonthh = myNumeral[41]; break;
           case 3:   stringdmonth = stringdmonthh + "    "; stringdmonthh = myNumeral[42]; break;
           case 4:   stringdmonth = stringdmonthh + "   "; stringdmonthh = myNumeral[43]; break;
           case 5:   stringdmonth = stringdmonthh + "      "; stringdmonthh = myNumeral[44]; break;
           case 6:   stringdmonth = stringdmonthh + "     "; stringdmonthh = myNumeral[45]; break;
           case 7:   stringdmonth = stringdmonthh + "     "; stringdmonthh = myNumeral[46]; break;
           case 8:   stringdmonth = stringdmonthh + "  "; stringdmonthh = myNumeral[47]; break;
           case 9:   stringdmonth = stringdmonthh + " "; stringdmonthh = myNumeral[48]; break;
           case 10:   stringdmonth = stringdmonthh + "  "; stringdmonthh = myNumeral[49]; break;
           case 11:   stringdmonth = stringdmonthh + "   "; stringdmonthh = myNumeral[50]; break;
           case 12:   stringdmonth = stringdmonthh + "  "; stringdmonthh = myNumeral[51]; break;
      }
           
           if (now.hour() < 10)   // это нолики перед часами до 10
           {
            stringHourd = '0' + stringHourdd;
           }
           else
           {
            stringHourd = stringHourdd;
           }
           
           
           if (now.minute() < 10)   // это нолики перед минутами до 10
           {
            stringMind = '0' + stringMindd;
           }
           else
           {
            stringMind = stringMindd;
           }

           
           if (now.second() < 10)   // это нолики перед секундами до 10
           {
            stringSecd = '0' + stringSecdd;
           }
           else
           {
            stringSecd = stringSecdd;
           }


           if (now.day() < 10)   // это нолики перед датой до 10
           {
            stringDaty = '0' + stringDatyd;
           }
           else
           {
            stringDaty = stringDatyd;
           }

          
           stringPerd = stringHourd + ':' + stringMind + ':' + stringSecd + " " + stringdday;       // собираем первую строку
           stringVtor = "\r\n" + stringDaty + " " + stringdmonth +  stringGod + " " + stringGodn;   // собираем вторую строку



           
    
              mySerial.println(stringPerd);  // печатаем первую строку
              mySerial.print(stringVtor);    // а это вторую
 delay(100);
  }

}
  

 

lavr
Offline
Зарегистрирован: 03.05.2017

Дерзайте!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Мда. 

lavr
Offline
Зарегистрирован: 03.05.2017

Чой?

lavr
Offline
Зарегистрирован: 03.05.2017

lavr
Offline
Зарегистрирован: 03.05.2017

Этих...они еще и так показывают...    ;(

rsa
Offline
Зарегистрирован: 16.10.2018

lavr, огромное спасибо за скетч. Буду собирать. DS3107 к сожалению нет, но есть DS3132.

mixa10
Offline
Зарегистрирован: 11.10.2018

rsa пишет:

lavr, огромное спасибо за скетч. Буду собирать. DS3107 к сожалению нет, но есть DS3132.

Исправлю DS3231, в наличи имею тоже тока этот модуль, буду пробовать переписать под него.

mixa10
Offline
Зарегистрирован: 11.10.2018

Вот собственно что получило, тяну остальную переферию, позже скину фото. lavr спасибо большое за внимание.

mixa10
Offline
Зарегистрирован: 11.10.2018

Красота

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

почти "пододеяльник", это намек что надо менять ?

mixa10
Offline
Зарегистрирован: 11.10.2018

Просто тэст

mixa10
Offline
Зарегистрирован: 11.10.2018

Интересно попробовать переписать чтоб цифра-знак был в две строки, буду изучать, если есть у кого возможноть, желание буду очень благодарен за помощь.

rsa
Offline
Зарегистрирован: 16.10.2018

Тоже собрал, часы работают, но дисплей мигает постоянно и время некорректное (rts ds3232). Нужно подправить скетч под этот модуль. Еще, похоже у дисплеев шрифты разные. У меня как у mixa10, буква "Д" неестественно выглядит.

lavr
Offline
Зарегистрирован: 03.05.2017

Попробуйте вместо "204" прописать латинское D, может, симпотишнее будет. Хотя, по мне и ваше Д нормальное.

ds 3231 получше , но, у меня было то, что было)))

rsa
Offline
Зарегистрирован: 16.10.2018

Подскажите, что нужно исправить в скетче, чтобы заработал модуль ds3231?

lavr
Offline
Зарегистрирован: 03.05.2017
mixa10
Offline
Зарегистрирован: 11.10.2018

rsa пишет:
Тоже собрал, часы работают, но дисплей мигает постоянно и время некорректное (rts ds3232).
Кнопки резисторами на +5v подтянули?

rsa
Offline
Зарегистрирован: 16.10.2018

Кнопки вообще не подключал. Собирал недавно часики ради развлечения (arduino+ds3231+lcd), кнопки также не подключал, ничего подобного не наблюдалось. Попробую выводы подтянуть.

lavr
Offline
Зарегистрирован: 03.05.2017

Давно это было...

257  int buttonState = digitalRead(buttonPin); // считываем состояние кнопки
258  if (buttonState == HIGH) {   // если высокая, время словами - иначе вся информация

Можно просмотреть, где как.

Кстати, вам не нужна определенная часть кода: коррекции времени кнопочками, ежедневная коррекция часов реального времени... rts ds3232 поточнее будет... 

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

 

mixa10
Offline
Зарегистрирован: 11.10.2018

rsa пишет:

Кнопки вообще не подключал. Собирал недавно часики ради развлечения (arduino+ds3231+lcd), 

Это далеко не LCD, тяните подтяжку резюками к +5 вольтам увидите результат, кнопки можно позже подцепить

rsa
Offline
Зарегистрирован: 16.10.2018

Заработало!!! Подтянул выводы кнопок к питанию и изображение перестало мигать. Спасибо mixa10!

 

mixa10
Offline
Зарегистрирован: 11.10.2018

rsa пишет:

Заработало!!! Подтянул выводы кнопок к питанию и изображение перестало мигать. Спасибо mixa10!

 

Как все просто ;-), похвастайтесь своим девайсом (фото).

rsa
Offline
Зарегистрирован: 16.10.2018

Исправил код буквы "ь" на \232

rsa
Offline
Зарегистрирован: 16.10.2018

Были проблемы с включением: если включать одновременно ардуино и дисплей, то на дисплее были кракозябры вместо букв; если сначала дисплей, затем ардуино, то все было нормально. Добавил трехсекундную задержку в void setup и все нормализовалось.

rsa
Offline
Зарегистрирован: 16.10.2018

lavr, подскажите, что это за таблица кодировки? И можно ли ее увидеть полностью?http://arduino.ru/forum/apparatnye-voprosy/podklyuchit-pole-display-k-arduino#comment-349548

lavr
Offline
Зарегистрирован: 03.05.2017

rsa пишет:

lavr, подскажите, что это за таблица кодировки? И можно ли ее увидеть полностью?http://arduino.ru/forum/apparatnye-voprosy/podklyuchit-pole-display-k-arduino#comment-349548

Ну как же? Каждой буковке соответствующий цифровой код. Я их нашел с помощью научного тыка, но, т.к. строчные буквы мне были не интересны, таблица не полная...

lavr
Offline
Зарегистрирован: 03.05.2017

rsa пишет:

Были проблемы с включением: если включать одновременно ардуино и дисплей, то на дисплее были кракозябры вместо букв; если сначала дисплей, затем ардуино, то все было нормально. Добавил трехсекундную задержку в void setup и все нормализовалось.

У меня импульсный блок питания 12В 2А, 5В для ардуины из этих 12 получаю посредством https://ru.aliexpress.com/item/MB102-Breadboard-Power-Supply-Module-3-3V-5V-For-Solderless-Breadboard/2027279953.html?spm=a2g0s.9042311.0.0.274233edL35wgQ

При включении запускается дислей, успевает подгрузиться название фирмы(некое ООО), затем запускается ардуина...в общем, всё хорошо :)

lavr
Offline
Зарегистрирован: 03.05.2017

Если надумаете экспериментировать, всякие и три четверти, настоятельно рекомендую прописывть в вышеуказанной табличке. Помогает увидеть, что получиться ну, и, правильно пересчитать пробелы :)

rsa
Offline
Зарегистрирован: 16.10.2018

За табличку спасибо. Я так и понял, что она была получена вручную.

Интересно, а можно вывести текст вот таким образом http://arduino.on.kg/redaktor-simvolov-dlya-matric-5h7 ?
 
Можно было бы свой шрифт создать.
rsa
Offline
Зарегистрирован: 16.10.2018

Дополнил таблицу

vitus73
Offline
Зарегистрирован: 30.03.2019

Всем привет! Часы очень интересные,но 9 кнопок управления это перебор как мне кажется. Может кто на 4 скетч переделывал для себя? Поделитесь если не трудно. 

Temik560
Offline
Зарегистрирован: 12.04.2019

Всем доброго времени.

Собрал такой проект но на ардуино Nano на кнопки кроме переключения режимов отображения реакции нет...

Подскажите где мог накосячить.. Кнопки к +5 подтянул через 10к

Разобрался. Включил програмно подтяжку входов к + и все пришло в норму