Помогите ГУРУ начинающему... DS3231 не пойму как записать в переменную числовой день недели
- Войдите на сайт для отправки комментариев
Пт, 25/05/2018 - 20:18
Сильно не пинайте, вообще новичок, но второй вечер сижу не могу записать в переменную weekDay текущий новер деня недели
Скетч такой:
#include <DS3231.h>
DS3231 clock;
RTCDateTime DateTime;
word weekDay;
void setup()
{
Serial.begin(9600);
clock.begin();
}
void loop()
{
DateTime = clock.getDateTime();
weekDay = clock.dateFormat("N",DateTime);
Serial.println(clock.dateFormat("N", DateTime));
Serial.println(weekDay);
delay(1000);
}
Смотрю в монитор портов результат
5
1945
т.е. строкой Serial.println(clock.dateFormat("N", DateTime));
выдаёт 5
строкой Serial.println(weekDay);
выдаёт 1945
хотя переменной присваиваю тоже значение что и вывожу в порт
weekDay = clock.dateFormat("N",DateTime);
Если меняю тип у переменной weekDay на int то выдаёт 1947
Если byte то выдаёт 153 (изначально его и ставил, т.к. значение должно быть т 1 до 7 правильно? или лучше др. тип использовать?).
Как мне записать текщий день недели в данный момент пятница т.е. нужно записать 5 в переменную weekDay, какой лучше использовать тип переменной учитывая то будет от 1 до 7
Пробовал вместо N использовать другие буквы из примера, но не дало результат
/*
Date formats (Day)
------------------
* d : Day of the month, 2 digits with leading zeros (01 to 31)
* D : A textual representation of a day, three letters (Mon through Sun)
* j : Day of the month without leading zeros (1 to 31)
* l : A full textual representation of the day of the week (Sunday through Saturday)
* N : ISO-8601 numeric representation of the day of the week (1 for Monday through 7 for Sunday)
* S : English ordinal suffix for the day of the month, 2 characters (st, nd, rd or th. Works well with j)
* w : Numeric representation of the day of the week (0 for Sunday through 6 for Saturday)
* z : The day of the year (0 through 365)
Всатавьте пожалуйста скетч по правилам форума. Та в окне написания сообщения кнопка есть.
#include <DS3231.h> DS3231 clock; RTCDateTime DateTime; byte weekDay; void setup() { Serial.begin(9600); clock.begin(); } void loop() { DateTime = clock.getDateTime(); weekDay = clock.dateFormat("N",DateTime); Serial.println(clock.dateFormat("N", DateTime)); Serial.println(weekDay); delay(1000); }Прошу прощения моё первое сообщение на этом форуме... новичок....
Вы бы еще сказали, где библиотеку брали. А то в гугле десяток с таким названием.
1. Функция dateFormat возвращает указатель на символьную строку и Ваша попытка запихасть строку в переменную тиап byte (строка №15) изначально не проходит. Она не число возвращает, у готовую строку для печати. Нужно число, так и берите его из Вашей переменной DateTime - Оно там уже готове сидит. Называется dayOfWeek.
2. Если не хотите часто и неожиданно ловить глюки - выбросьте эту библиотеку и никогда не используйте. Найдите получше. Эту писал человек не намного грамотнее Вас.
Вы бы еще сказали, где библиотеку брали. А то в гугле десяток с таким названием.
Я знаю эту библиотеку. Это та, где автор ничтоже сумнящеся возвращает указатель на локальный объект, а потом "программисты" типа ТС (да и немного пограмотнее - тоже) в истерике бьются - "почему ни с того ни с сего заглючило - вчера работало" :)
С библиотекой да... чтоб в чёмто разобраться нужно посмотреть как это делают другие, поэтому смотрел видео, пробовал с разных мест. Вроде скачаешь одну попробуешь как пример вставишь всё работает, но учитывая что опыта 0 не всё понимаешь в сктче в результате гдето четвертая по счёту библиотека под видео https://www.youtube.com/watch?v=7yyGwjR64QU ссылка на яндекс диск библиотека https://yadi.sk/d/EPoJicxuvDVUd открыл посмотрел понравилась тем что там и часы и будильник и вроде как всё не сильно сложно и всё вроде как понятно. В результате часы будильник настроил всё работает, прикрутил датчик темературы, давление, экран 1602, прикрутил датчик качества воздуха MQ135 всё красиво, потом наткнулся на библиотеку LCD_1602_RUS решил день недели выводить на экран не по английски, эта библиотека выводит на английском без проблем, решил сделать типа
ОК спасибо за инфу, посоветуйте библиотеку написанную "прямыми руками"... будем с ней разбираться
1. Функция dateFormat возвращает указатель на символьную строку и Ваша попытка запихасть строку в переменную тиап byte (строка №15) изначально не проходит. Она не число возвращает, у готовую строку для печати. Нужно число, так и берите его из Вашей переменной DateTime - Оно там уже готове сидит. Называется dayOfWeek.
2. Если не хотите часто и неожиданно ловить глюки - выбросьте эту библиотеку и никогда не используйте. Найдите получше. Эту писал человек не намного грамотнее Вас.
Большое спасибо поставил weekDay = DateTime.dayOfWeek;
всё получилось... Как бы тема закрыта, но если посоветуете более правльную библиотеку будем с ней разбираться дальше.
К сожалению, не посоветую. Я пользую библиотеки только когда надо по-быстрому проверить новый модуль (работае-не работает, чтобы знать чего китайцу ставить в отзыве) и в примерах, которые иногда пишу здесь. В реальной жизни я их не использую почти никогда. Что мне надо - пишу сам. По большому счёту это неправильно, но это "по большому", а когда библиотеки писал ХЗ кто и доверие к ним соответствующее, то уж лучше потратить время, но знать, что все ляпы в программе - мои собственные. Оно ж "своё дерьмо не воняет", так ведь.
К сожалению, не посоветую. Я пользую библиотеки только когда надо по-быстрому проверить новый модуль (работае-не работает, чтобы знать чего китайцу ставить в отзыве) и в примерах, которые иногда пишу здесь. В реальной жизни я их не использую почти никогда. Что мне надо - пишу сам. По большому счёту это неправильно, но это "по большому", а когда библиотеки писал ХЗ кто и доверие к ним соответствующее, то уж лучше потратить время, но знать, что все ляпы в программе - мои собственные. Оно ж "своё дерьмо не воняет", так ведь.
Спасабо. Пока вроде работает будем двигаться дальше, как раз от китайцев пришёл SIM900, герконовые датчики и пир датчик, будем дальше прикручивать к тому что есть, так постепенно разберусь с основами, дальше будем копать глубже, возможно когда нибудь и я буду писать свои библиотеки а не использовать чьито... А вам ешё рвз больше спасибо за помощь.
Я вот эту под себя дербанил: https://github.com/Makuna/Rtc