Странный 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 для года. Но ничего не изменилось.
Извините, но я понятия не имею, какую ошибку новичка я совершаю на этот раз?? :-(
Спасибо за помощь.
@Andreas K., 👍0
1 ответ
Лучший ответ:
Вы использовали одинарные кавычки вместо двойных. Одинарные кавычки предназначены для одиночных символов. Двойные кавычки предназначены для строк (или массивов символов).
Serial.print(' Time:');
должно быть
Serial.print(" Time:");
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Как напечатать несколько номеров через Serial с очень небольшим количеством строк кода?
- Акцептант векселей ИКТ
- Проблема с массивом + последовательным монитором
- Arduino wrap или подкласс print() для работы с несколькими Serial
- Матричный дисплей с Arduino UNO (ПРОБЛЕМА)
- Проверка входной строки последовательной связи Arduino
Спасибо. Я думал, что «и» взаимозаменяемы., @Andreas K.
Они в javascript или PHP, а не в C/C++., @Gerben