Ардуино+MAX7219

VitVas198
Offline
Зарегистрирован: 02.08.2015

Собрал часы на Arduino NANO и MAX7219, однако при загрузке скетча  на строке:  DS3231 RTC ( SDA, SCL ) ;      // Часы

 реального времени

возникает ошибка -   no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'-   no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'.

Прошу помочь разобраться

 

 (https://www.hackster.io/M-V-P/arduino-nano-clock-with-4x64-led-matrix-409730  -  оригинал статьи и скетча)

/ * Часы Arduino Nano DS3231 со светодиодной матрицей 4x ( 8x8 ) SPI

 * 

* Arduino Nano 5V логика - 32кБ прог. пространство 

* Инструменты: Доска: Arduino Nano ; Процессор: ATmega328P ( Старый загрузчик ) !!

* LED Matrix 4x ( 8x8 ) SPI с разъемом на правой стороне ( последний модуль )

* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in-1-Display-For-Ar... = myorder & cur_warehouse = CN

* СОЕДИНЕНИЯ:

* >> LCD 4x64 -> Arduino Nano: ( с использованием аппаратного SPI ) :  

* 5 В -> 5 В контакт

* GND -> контакт GND

* CLK_PIN ->   13   // или SCK

* DATA_PIN ->   11   // или MOSI

* CS_PIN ->   10   // или SS   

*     

* >> DS3231 RTC -> Arduino Nano:

* SDA ( DAT )      -> A4

* SCL ( CLK )      -> A5

* Вдохновлено: 1 ) Часы Arduino от AnthoTRONICS Последнее редактирование: 22 марта 2019 г.

* но без MD_parola из-за большого размера! Новая функция getdate .

* 2 ) Простейшие цифровые часы UNO от plouc68000:

* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clo... = пользователь & ref_id = 680368 & offset = 1

* 3 ) LEDDotMatrixClock.ino от Леонардо Спосина, но здесь без «Max72xxPanel.h»

* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/mas...

* Не используется Max72xxPanel.h, но используются небольшие цифры. Небольшой код здесь.

* Заменить в библиотеке MD_MAX72XX / src / MD_MAX72xx_font.cpp:

* 1 )   #define USE_NEW_FONT 1

* 2 )   шрифты № 148 ... 158 необходимо заменить шрифтами 3х5:

  3 , 248 , 136 , 248 , // 48  0

  3 , 144 , 248 , 128 , // 49  1

  3 , 200 , 168 , 184 , // 50  2

  3 , 136 , 168 , 248 , // 51  3

  3 , 112 , 72 , 224 , // 52  4

  3 , 184 , 168 , 232 , // 53  5

  3 , 248 , 168 , 232 , // 54  6

  3 , 8 , 232 , 24 , // 55  7

  3 , 248 , 168 , 248 , // 56  8

  3 , 184 , 168 , 248 , // 57  9

  1 , 80 , // 58 :

*

* проект: 13790 байт ( 44 % ) ; переменные 361 байт ( 17 % )

* Автор: MVP https://www.hackster.io/MVP

* /

 

#include <SPI.h>

#include "DS3231.h"

#include "MD_MAX72xx_lib.h"

// # include "Font_Data.h"

 

DS3231 RTC ( SDA, SCL ) ;      // Часы

 реального времени

константный  байт LDR_PIN = A2 ; // Вывод датчика LDR

 

#define MAX_DEVICES 4

// Определяем контакты

#define CLK_PIN 13 // или SCK

#define DATA_PIN 11 // или MOSI

#define CS_PIN 10 // или SS

#define HARDWARE_TYPE MD_MAX72XX :: ICSTATION_HW

 

#define USE_NEW_FONT 1

 

#define BUF_SIZE 20 // размер текстового буфера

#define CHAR_SPACING 1 // пиксели между символами

 

символ buf [ BUF_SIZE ] , сек [ 4 ] ;

uint8_t dots ;

 

 

// Аппаратный интерфейс SPI

// Max72xxPanel matrix  = Max72xxPanel ( CS_PIN, H_DISPLAYS, V_DISPLAYS ) ;

Матрица  MD_MAX72XX = MD_MAX72XX ( HARDWARE_TYPE, CS_PIN, MAX_DEVICES ) ;

 

const byte WAIT  =  100 ;

константный байт SPACER  =  1 ;

байт FONT_WIDTH ;

 

bool timeset = false ;

 

void AdjustClock ( String data )  {

  byte _day  = data.substring ( 0 , 2 ) .toInt () ;

  byte _month  = data.substring ( 3 , 5 ) .toInt () ;

  int _year  = data.substring ( 6 , 10 ) .toInt () ;

  byte _hour  = data.substring ( 11 , 13 ) .toInt () ;

  byte _min  = data.substring ( 14 , 16 ) .toInt () ;

  байт _sec  = data.substring ( 17 , 19 ) .toInt () ;

  rtc.setTime ( _hour, _min, _sec ) ;

  rtc.setDate ( _day, _month, _year ) ;

  Serial.println ( F ( ">> Дата и время успешно установлены!" )) ;

  время = истина ;

}

 

byte ledintensitySelect ( int light )  {

  байт _value  =  0 ;

  if  ( light> =  0  && light < =  127 )  {

    _value  =  12 ;

  }  else  if  ( light> =  128  && light < =  319 )  {

    _value  =  3 ;

  }  else  if  ( light> =  320  && light < =  512 )  {

    _value  =  0 ;

  }

  вернуть _value ;

} ;

 

 

 

 

void printText ( uint8_t modStart, uint8_t modEnd, char * pMsg )

// Вывести текстовую строку в указанные модули светодиодной матрицы.

// Область сообщения дополняется пустыми столбцами после печати.

{

состояние    uint8_t    =  0 ;

  uint8_t curLen ;

  uint16_t showLen ;

  uint8_t cBuf [ FONT_WIDTH ] ;

  int16_t    col  =  (( modEnd + 1 ) * COL_SIZE ) - 1 ;

 

  matrix.control ( modStart, modEnd, MD_MAX72XX :: UPDATE, MD_MAX72XX :: OFF ) ;

 

  do      // конечный автомат для печати символов в доступном пространстве

  {

    переключатель ( состояние )

    {

      case  0 : // Загрузить следующий символ из таблицы шрифтов

        // если мы достигли конца сообщения, сбрасываем указатель сообщения

        если  ( * pMsg ==  '\ 0' )

        {

          showLen  = col - ( modEnd * COL_SIZE ) ;   // заполнение символов

          состояние  =  2 ;

          перерыв ;

        }

 

        // получить следующий символ из файла шрифта

        showLen  = matrix.getChar ( * pMsg ++, sizeof ( cBuf ) / sizeof ( cBuf [ 0 ]) , cBuf ) ;

        curLen  =  0 ;

        состояние ++ ;

        // !! сознательно перейти к следующему состоянию, чтобы начать отображение

 

      case  1 : // отображать следующую часть символа

        matrix.setColumn ( col--, cBuf [ curLen ++ ]) ;

 

        // сделано с символом шрифта, теперь отображаем пробел между символами

        if  ( curLen  == showLen )

        {

          showLen  = CHAR_SPACING ;

          состояние  =  2 ;

        }

        перерыв ;

 

      case  2 : // инициализировать состояние для отображения пустых столбцов

        curLen  =  0 ;

        состояние ++ ;

        // провалиться

 

      case  3 : // отображать межсимвольный интервал или конец заполнения сообщения ( пустые столбцы )

        matrix.setColumn ( col--, 0 ) ;

        curLen ++ ;

        if  ( curLen  == showLen )

          состояние  =  0 ;

        перерыв ;

 

      дефолт:

        col  = -1 ;    // это определенно завершает цикл

 do    }

  }  while  ( col> =  ( modStart * COL_SIZE )) ;

 

  matrix.control ( modStart, modEnd, MD_MAX72XX :: UPDATE, MD_MAX72XX :: ON ) ;

}

 

 

void setup ()  {

  pinMode ( LDR_PIN, INPUT_PULLUP ) ;

  Serial.begin ( 9600 ) ;

  Serial.println ( F ( ">> Матричные часы с точечным светодиодом Arduino 32x8!" )) ;

  Serial.println ( F ( ">> Используйте формат <дд / мм / гггг чч: мм: сс> для установки даты и часа часов!" )) ;

  rtc.begin () ;

  matrix.begin () ;

  matrix.clear () ;

  FONT_WIDTH =  5 + SPACER ; // Ширина шрифта 5 пикселей 

  matrix.control ( MD_MAX72XX :: INTENSITY, 2 ) ;; // Используем значение от 0 до 15  для яркости

}

 

void getDate ()

// Настройка даты: код для чтения даты часов

{ char * month [] = { "январь" , "февраль" , "март" , "апрель" , "май" , "июнь" , "июль" , "август" , "сентябрь" , "октябрь" , "ноябрь" " , " Dec " } ;

 

  String dts  = rtc.getDateStr () ;     // Получить строку дд / мм / гггг

  String dds = dts.substring ( 0 , 2 ) ;     // Извлечение даты

  String mms = dts.substring ( 3 , 5 ) ;     // Извлечь месяц

  int mm = mms.toInt () ;                // Преобразовать в номер месяца

  dds.concat ( "" ) ;

  dds.concat ( String ( месяцы [ мм-1 ])) ; // Перестроить строку даты как "dd Mmm"

  dds.toCharArray ( buf, sizeof ( buf )) ; // возврат буфера

}

 

void getHour ()

// Настройка даты: код для чтения даты часов

{ char * month [] = { "январь" , "февраль" , "март" , "апрель" , "май" , "июнь" , "июль" , "август" , "сентябрь" , "октябрь" , "ноябрь" " , " Dec " } ;

 

  String dts  = rtc.getTimeStr () ;     // Получить строку чч: мм: сс

  String hhs = dts.substring ( 0 , 2 ) ;     // Извлечь час

  int hh = hhs.toInt () ;                // Преобразовать в число

  if  ( hh < 10 )  точек = 7 ;

  если ( чч> 19  && чч < 24 )

    точки = 13 ;

  если  (( чч> 9  && чч < 20 )  ||  ( чч  ==  21 ))

    точки = 11 ; 

  if  ( hh  ==  1 )  dots = 5 ;

  if  ( hh  ==  11 )  dots = 10 ;

  // String outmsg = dts.substring ( 0 , 5 ) ;     // Извлечение чч: мм ( необязательно )

  String outmsg = String ( чч ) ;               // Извлекаем h, если h < 10

  outmsg.concat ( ":" ) ;                     // Добавить :

  outmsg.concat ( dts.substring ( 3 , 5 )) ;      // добавить мм

  outmsg.toCharArray ( buf, BUF_SIZE ) ;

 

}

 

void showsec ()

{

  String dts  = rtc.getTimeStr () ;     // Получить строку чч: мм: сс

  Строка scs1 = dts.substring ( 6 , 7 ) ;

  Строка scs2 = dts.substring ( 7 ) ; 

  char sc1 = 148 + scs1.toInt () ;         // Преобразовать в индекс char

  char sc2 = 148 + scs2.toInt () ;         // Преобразовать в индекс char

  matrix.setChar ( 6 , sc1 ) ;

  matrix.setChar ( 2 , sc2 ) ;

}

 

 

 

void loop ()  {

  byte ledIntensity  = ledintensitySelect ( analogRead ( LDR_PIN )) ;

  matrix.control ( MD_MAX72XX :: INTENSITY, ledIntensity ) ;; // Используем значение от 0 до 15  для яркости

 

  // Показать чч: мм из буфера

  getHour () ;

  printText ( 0 , MAX_DEVICES-1, buf ) ;

  задержка ( ПОДОЖДИТЕ ) ;

 

  // мигает две точки:

  for  ( uint8_t i = 0 ; i < 8 ; i ++ ) {

    matrix.setColumn ( MAX_DEVICES * 8 точек, 36 ) ;

    showsec () ;

    задержка ( 250 ) ;

    matrix.setColumn ( MAX_DEVICES * 8-точек, 0 ) ;

    showsec () ;

    задержка ( 250 ) ;

  }

 

  // Выход с прокруткой вверх:

  for  ( uint8_t i = 0 ; i < 8 ; i ++ ) {

    matrix.transform ( MD_MAX72XX :: TSU ) ; задержка ( 2 * ПОДОЖДИТЕ ) ;

    задержка ( ПОДОЖДИТЕ ) ;

  }

  

  getDate () ;

  printText ( 0 , MAX_DEVICES-1, buf ) ;

  задержка ( 20 * ПОДОЖДИТЕ ) ;

 

  int temp  = rtc.getTemp () ;

  temp = temp-1 ;                              // Смещение -1 С

  String outmsg = String ( temp ) ;

  outmsg.concat ( "C" ) ;

  outmsg.toCharArray ( buf, BUF_SIZE ) ;

  printText ( 0 , MAX_DEVICES-1, buf ) ;

  задержка ( 20 * ПОДОЖДИТЕ ) ;

 

  // Установка времени в RTC:

  if  ( Serial.available () > 0  &&  timeset == false )  {

    AdjustClock ( Serial.readString ()) ;

  }

 

}

 

 

 

b707
Offline
Зарегистрирован: 26.05.2017

вставьте код в сообщение правильно

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

И ношкой топни. 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А научились переводчиком пользоваться. Порадовало:

* Вдохновлено: 1 ) Часы Arduino от AnthoTRONICS Последнее редактирование: 22 марта 2019 г.

VitVas198
Offline
Зарегистрирован: 02.08.2015

не понял Вашего совета. Что и куда я должен вставить? Я скопировал сообщение об ошибке и приложил скетч, который скачал с сайта автора

b707
Offline
Зарегистрирован: 26.05.2017

Вы вставили код скетча неправильно. Сравните, как выглядит код у вас. и как в любой соседней теме, например тут:

http://arduino.ru/forum/programmirovanie/avtomaticheskii-schetchik

 

VitVas198
Offline
Зарегистрирован: 02.08.2015

Спасибо b707 за ценный совет. Сообщаю, что в Ардуино код (скетч) я загрузил с сайта разработчика ничего не меняя (без перевода). Поэтому еще раз повторяю, подскажите, пожалуйста, мне, пожилому человеку, в чем ошибка и как ее исправить? Сообщение об ошибке и строку, на которую ошибка ссылается, я показал. Поэтому и прошу вашей помощи уважаемые знатоки. Надеюсь на конструктивные советы.

GarryC
Offline
Зарегистрирован: 08.08.2016

Не обижайтесь на предложение оформить вставку кода, как положено, иначе очень трудно читать и, соответственно, отвечать.

А по теме: в скетче я не вижу определения констант SCL, DAT, скорее всего, они берутся из файла SPI.h и конфликтуют с параметрами, которые принимает конструктор библиотеки DS2131, которую использовал автор приведенного скетча.

Попробуйте написать DS3231 RTC ( DATA_PIN, CLК_PIN ), эти константы определены прямо в скетче.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Вставьте код правильно, как в этой инструкции (нумерацию строк НЕ убирайте).

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

Сдаётся мне, что вот так оно надо, без параметров:

DS3231 RTC;      // Часы

b707
Offline
Зарегистрирован: 26.05.2017

VitVas198 пишет:

Спасибо b707 за ценный совет. Сообщаю, что в Ардуино код (скетч) я загрузил с сайта разработчика ничего не меняя (без перевода).

такое впечатление, что вы читать не умеете. При чем тут то, откуда вы взяли скетч и меняли ли вы его? - Я вам написал. что вы неправильно вставили скетч В ФОРУМ, а вы "включаете дурочку" и делаете вид, что вас это не касается.

Цитата:
Поэтому еще раз повторяю, подскажите, пожалуйста, мне, пожилому человеку, в чем ошибка и как ее исправить?

Отвечу, хотя и не стоило было. У вас проблема в неправильной библиотеке. Дело в том, что библиотек DS3231.h существует несколько и автор использует не ту DS3231.h. что лежит на сайте Ардуино. Библиотеку, которую использовал автор. можно скачать на том же сайте, где вы скачали сам скетч. Ссылка на страницу с исходным кодом у вас вставлена прямо в заголовк скетча в комментариях.

VitVas198
Offline
Зарегистрирован: 02.08.2015

Спасибо b707 и другин ардуинщикам за советы. Буду пробовать поменять библиотеку DS3231.h на версию в авторском скетче. И подскажите тогда еще, только не сердитесь, как тогда отличать версии библиотек и надо ли удалить ту версию, что стоит у меня. Буду признателен за ответ

b707
Offline
Зарегистрирован: 26.05.2017

VitVas198 пишет:

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

Различать библиотеки с одинаковыми именами - это проблема. Единого рецепта нет. Надежнее всего брать те же библиотеки, что использовал автор программы.

На второй вопрос - дублирующиеся библиотеки лучше удалять

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А мы так и не увидели начальника транспортного... в смысле нормально вставленной программы. Это саботаж или тупизм?

VitVas198
Offline
Зарегистрирован: 02.08.2015

Спасибо, буду пробовать

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

VitVas198 пишет:

Спасибо, буду пробовать

Т.е. Вы всех обосрали. Что Вас просили по поводу программы Вы не сделали. Но будете пробовать?

Писец. И Вам ещё кто-то помогает?

Мозахисты, видимо...

VitVas198
Offline
Зарегистрирован: 02.08.2015
/*  Arduino Nano DS3231 clock with LED Matrix 4x(8x8) SPI
 *  
 *  Arduino Nano 5V logic - 32kB prog. space  
*  Tools:Board: Arduino Nano; Processor: ATmega328P (Old Bootloader)!!
*  LED Matrix 4x(8x8) SPI with connector on the right side (last module)
*  https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in-1-Display-For-Ar...
*  
*  CONNECTIONS:
*  >> LCD 4x64   -> Arduino Nano: (using Hardware SPI):   
*       5V            -> 5V pin
*       GND           -> GND pin
*     CLK_PIN        ->  13  // or SCK
*    DATA_PIN        ->  11  // or MOSI
*      CS_PIN        ->  10  // or SS    
*      
*  >> DS3231 RTC -> Arduino Nano:
*       SDA (DAT)     -> A4
*       SCL (CLK)     -> A5 
* Inspired by : 1) Arduino Clock by AnthoTRONICS Last edit: March 22,2019
* but without MD_parola because of its large footprint! New getdate function.
* 2) Simplest UNO Digital Clock Ever by plouc68000:
* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clo...
* 3) LEDDotMatrixClock.ino by Leonardo Sposina, but here without "Max72xxPanel.h"
* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/mas...
* Not using Max72xxPanel.h, but small size digits are stll used. Small footprint code here.
* Replace in library MD_MAX72XX/src/MD_MAX72xx_font.cpp : 
* 1)  #define USE_NEW_FONT 1
* 2)  fonts #148 ... 158 must be replaced with 3x5 fonts:
  3, 248, 136, 248,   // 48 0
  3, 144, 248, 128,   // 49 1
  3, 200, 168, 184,   // 50 2
  3, 136, 168, 248,   // 51 3
  3, 112, 72, 224,    // 52 4
  3, 184, 168, 232,   // 53 5
  3, 248, 168, 232,   // 54 6 
  3, 8, 232, 24,      // 55 7
  3, 248, 168, 248,   // 56 8
  3, 184, 168, 248,   // 57 9
  1, 80,              // 58 :
* 
* project: 13790 bytes (44%); variables 361 bytes (17%)
* Author: MVP https://www.hackster.io/M-V-P
*/

#include <SPI.h>
#include "DS3231.h"
#include "MD_MAX72xx_lib.h"
//#include "Font_Data.h"

DS3231 rtc(SDA, SCL);     // Real time clock

const byte LDR_PIN = A2; // LDR Sensor pin

#define MAX_DEVICES  4
// Define pins
#define CLK_PIN   13  // or SCK
#define DATA_PIN  11  // or MOSI
#define CS_PIN    10  // or SS
#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW

#define USE_NEW_FONT 1

#define BUF_SIZE      20  // text buffer size
#define CHAR_SPACING  1   // pixels between characters

char buf[BUF_SIZE], secs[4];
uint8_t dots;


// SPI hardware interface
// Max72xxPanel matrix = Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);
MD_MAX72XX matrix = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

const byte WAIT = 100;
const byte SPACER = 1;
byte FONT_WIDTH;

bool timeset=false;

void adjustClock(String data) {
  byte _day = data.substring(0,2).toInt();
  byte _month = data.substring(3,5).toInt();
  int _year = data.substring(6,10).toInt();
  byte _hour = data.substring(11,13).toInt();
  byte _min = data.substring(14,16).toInt();
  byte _sec = data.substring(17,19).toInt();
  rtc.setTime(_hour, _min, _sec);
  rtc.setDate(_day, _month, _year);
  Serial.println(F(">> Datetime successfully set!"));
  timeset=true;
}

byte ledintensitySelect(int light) {
  byte _value = 0;
  if (light >= 0 && light <= 127) {
    _value = 12;
  } else if (light >= 128 && light <= 319) {
    _value = 3; 
  } else if (light >= 320 && light <= 512) {
    _value = 0;
  }
  return _value;
};




void printText(uint8_t modStart, uint8_t modEnd, char *pMsg)
// Print the text string to the LED matrix modules specified.
// Message area is padded with blank columns after printing.
{
  uint8_t   state = 0;
  uint8_t   curLen;
  uint16_t  showLen;
  uint8_t   cBuf[FONT_WIDTH];
  int16_t   col = ((modEnd + 1) * COL_SIZE) - 1;

  matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::OFF);

  do     // finite state machine to print the characters in the space available
  {
    switch(state)
    {
      case 0: // Load the next character from the font table
        // if we reached end of message, reset the message pointer
        if (*pMsg == '\0')
        {
          showLen = col - (modEnd * COL_SIZE);  // padding characters
          state = 2;
          break;
        }

        // retrieve the next character form the font file
        showLen = matrix.getChar(*pMsg++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf);
        curLen = 0;
        state++;
        // !! deliberately fall through to next state to start displaying

      case 1: // display the next part of the character
        matrix.setColumn(col--, cBuf[curLen++]);

        // done with font character, now display the space between chars
        if (curLen == showLen)
        {
          showLen = CHAR_SPACING;
          state = 2;
        }
        break;

      case 2: // initialize state for displaying empty columns
        curLen = 0;
        state++;
        // fall through

      case 3:  // display inter-character spacing or end of message padding (blank columns)
        matrix.setColumn(col--, 0);
        curLen++;
        if (curLen == showLen)
          state = 0;
        break;

      default:
        col = -1;   // this definitely ends the do loop
    }
  } while (col >= (modStart * COL_SIZE));

  matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::ON);
}


void setup() {
  pinMode(LDR_PIN, INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println(F(">> Arduino 32x8 LED Dot Matrix Clock!"));
  Serial.println(F(">> Use <dd/mm/yyyy hh:mm:ss> format to set clock's date and hour!"));
  rtc.begin();
  matrix.begin();
  matrix.clear();
  FONT_WIDTH= 5 + SPACER; // The font width is 5 pixels  
  matrix.control(MD_MAX72XX::INTENSITY, 2);; // Use a value between 0 and 15 for brightness
}

void getDate()
// Date Setup: Code for reading clock date
{ char*  months[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

  String dts = rtc.getDateStr();    // Get dd/mm/yyyy string
  String dds=dts.substring(0,2);    // Extract date
  String mms=dts.substring(3,5);    // Extract month
  int mm=mms.toInt();               // Convert to month number
  dds.concat(" ");
  dds.concat(String(months[mm-1])); // Rebuild date string as "dd Mmm" 
  dds.toCharArray(buf,sizeof(buf)); // return buffer
}

void getHour()
// Date Setup: Code for reading clock date
{ char*  months[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

  String dts = rtc.getTimeStr();    // Get hh:mm:ss string
  String hhs=dts.substring(0,2);    // Extract hour
  int hh=hhs.toInt();               // Convert to number
  if (hh < 10) dots=7;
  if(hh > 19 && hh < 24)
    dots=13;
  if ((hh > 9 && hh < 20) || (hh == 21))
    dots=11;  
  if (hh == 1) dots=5;
  if (hh == 11) dots=10;
  //String outmsg=dts.substring(0,5);    // Extract hh:mm (optional)
  String outmsg=String(hh);              // Extract h if h<10
  outmsg.concat(":");                    // add :
  outmsg.concat(dts.substring(3,5));     // add mm
  outmsg.toCharArray(buf,BUF_SIZE);

}

void showsec()
{

 

VitVas198
Offline
Зарегистрирован: 02.08.2015

не надо обижаться и грубить. Я ведь прошу Вашей помощи и еще много чего не знаю.

Сенин Андрей Ге...
Offline
Зарегистрирован: 28.09.2020

А это норма, постоянно у ардодротов сталкиваюсь с хамством, секта у них что ли такая... Спрашивать тут бесполезно, я у англичан спрашиваю и всегда адекватные люди там.

v258
Offline
Зарегистрирован: 25.05.2020

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

Вы специально здесь зарегистрировались, чтобы нам это сообщить?

Сенин Андрей Ге...
Offline
Зарегистрирован: 28.09.2020

Ну раз без регистрации нельзя. Почитал ветку, реально по теме было 2 ответа, остальное спам.

v258
Offline
Зарегистрирован: 25.05.2020

Сенин Андрей Георгиевич пишет:

Ну раз без регистрации нельзя

Но очень хотелось. Спасибо, ваше мнение очень ценно для нас )))

Сенин Андрей Ге...
Offline
Зарегистрирован: 28.09.2020

Естественно! Не за что.

Гриша
Offline
Зарегистрирован: 27.04.2014

Сенин Андрей Георгиевич пишет:

Естественно! Не за что.

и как отвечать человеку, который взял чужой код, пришел на другой форум и задал вопрос не по существу?... Т.е. весь его труд сКопиПастить

формат этого форума - помочь в малом, а не сделать вместо... вот только для одного малое- это таймер или прерывание, а для другого сопротивление и диод.  

теперь, каждый день на форум приходит множество "просителей" палец о палец не ударившее и просят исправить чужой код.  Тут ответа два или сайт разраба говнокода или топик ищу исполнителя. 

Есть третий вариант - научиться, но обычно очень редко кто на него соглашается. 

кроме всего прочего - пост 10, 11, 12, 13...   и какие могут быть обиды? 

VitVas198 пишет:

не надо обижаться и грубить. Я ведь прошу Вашей помощи и еще много чего не знаю.

если хотите помощи - обращайте внимания на советы, хотя-бы осмысливайте их. Был тут у нас один примечательный персонаж - Клапауций - грубиян и хам... его очень долго терпели, а это разве грубость?!!! Вот он хамил всем и всегда. Но даже своим хамством помогал многим - так сказать магический пинок делал... вот только хрустальные шары запретил... до сих пор его запрет помнят и чтят... :)

Сенин Андрей Ге...
Offline
Зарегистрирован: 28.09.2020

И лучший ответ отправить в гугл? Сложно сказать, иди мимо, не сложно- ответь. Народ как то оскатинился.

v258
Offline
Зарегистрирован: 25.05.2020

Сенин Андрей Георгиевич пишет:

Народ как то оскатинился.

Злые языки утверждают, что "адекватные" англичане - большие мастера вежливого оскорбления. Не знаючи - и не поймешь ;)

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Сенин Андрей Георгиевич пишет:

 Народ как то оскатинился.

В смысле скатывается по наклонной? Или это от "оскал"?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Сенин Андрей Георгиевич пишет:

И лучший ответ отправить в гугл? Сложно сказать, иди мимо, не сложно- ответь. Народ как то оскатинился.

Вот я ещё не забыл те времена, когда КНИГА была лучшим учителем, никаких интернетов и смартфонов. Все запоминали, потому что таскать с собой библиотеку весом в 4-5 сотен килограмм в виде книг было не легко. Ничего, жили, работали, ПОМНИЛИ ЧТО КУДА И ЗАЧЕМ. Никто и не знал что такое «гуглить». Помогали товарищам, правда в основном не в Гугл посылали, а нужную книгу давали для прочтения. Сейчас (видимо темп жизни такой скорый) никто ничего ни читать (не то что учить) не хочет - надо сразу и быстро и чтобы без регистрации смс и оплаты. А думать и мыслить кто будет? Другие? А «и кушать вы за меня буде е? - Ага!» ))

Green
Offline
Зарегистрирован: 01.10.2015

asam пишет:

Сенин Андрей Георгиевич пишет:

 Народ как то оскатинился.

В смысле скатывается по наклонной? Или это от "оскал"?


В наших краях водится рыба скат. Наступишь - ударит хвостом в ногу. Похоже от этого.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

v258 пишет:

Сенин Андрей Георгиевич пишет:

Народ как то оскатинился.

Злые языки утверждают, что "адекватные" англичане - большие мастера вежливого оскорбления. Не знаючи - и не поймешь ;)

только ли англичане? в одной уважаемой конторе моя начальница перевела Большому Боссу, что я ему сказал, это был мой последний день работы в Уважаемой конторе )))