Странный RTC DS3231 Вывод только при сохранении дат в переменные

Мне очень жаль задавать этот вопрос, так как я думаю, что он больше связан с моими посредственными навыками программирования на C++, чем с Arduino. У меня есть проект, в котором я хочу использовать RTC DS2131. Я начал с использования всех отдельных примеров модулей, которые мне нужны, и собрал их вместе. А вот от RTC у меня голова болит :-(

Пример работал нормально, в нем просто выводилась дата на последовательный порт. Что-то в этом роде:

Serial.print(RTC.getDay());
Serial.print("-");
Serial.print(RTC.getMonth());

Теперь мне нужны эти значения в разных переменных, потому что я также хочу сохранить их на SD-карте.

Итак, я придумал эту простую тестовую программу:

#include <Wire.h>
#include <RTC.h>

static DS3231 RTC;

void setup()
{ 
  Serial.begin(9600);
  RTC.begin();
}

void loop()
{  
int yearNow; 
int monthNow, dateNow, hourNow, minuteNow, secondNow, weekNow;

if (RTC.isRunning())
  {
    yearNow=RTC.getYear();
    monthNow =RTC.getMonth();
    dateNow=RTC.getDay();
    weekNow=RTC.getWeek();
    hourNow=RTC.getHours();
    minuteNow=RTC.getMinutes();
    secondNow=RTC.getSeconds();
   
    Serial.print("Weekday: ");
    Serial.print(weekNow);
    Serial.print('  Time:');
    // Наконец, часы, минуты и секунды
    Serial.print(hourNow);
    Serial.print('-');
    Serial.print(minuteNow);
    Serial.print('-');
    Serial.print(secondNow);
    Serial.print(" ##  ");    
    Serial.print("Date: ");
    Serial.print(yearNow);
    Serial.print('/');
    Serial.print(monthNow);
    Serial.print('/');
    Serial.println(dateNow);
    
  }
}

Теперь я ожидаю такого вывода: День недели: 4 Время: 16-10-36 ## Дата: 28.07.2020

Но вот что я получаю: День недели: 42591416-10-36 ## Дата: 28.07.2020

Кстати, переменные в этом скетче объявлены как "int". Изучив заголовочные файлы библиотеки, я попробовал uint8_t соответственно. uint16_t для года. Но ничего не изменилось.

Извините, но я понятия не имею, какую ошибку новичка я совершаю на этот раз?? :-(

Спасибо за помощь.

, 👍0


1 ответ


Лучший ответ:

1

Вы использовали одинарные кавычки вместо двойных. Одинарные кавычки предназначены для одиночных символов. Двойные кавычки предназначены для строк (или массивов символов).

Serial.print('  Time:');

должно быть

Serial.print("  Time:");
,

Спасибо. Я думал, что «и» взаимозаменяемы., @Andreas K.

Они в javascript или PHP, а не в C/C++., @Gerben