RTC DS1307 вывод времени на 7ми сегментный индикатор
- Войдите на сайт для отправки комментариев
Пт, 02/11/2012 - 02:06
Подскажите пожалуйста, как используя ЭТУ библиотеку для часов реального времени DS1307 вытащить значения часов, минут и секунд в отдельные переменные если для получения времени через serial используется rtc.getTimeStr() и формат вывода hh:mm:ss ?
Попробуйте поработать с функцией sscanf() (<stdio.h>).
Ну и strtok() (<string.h>) вам в помощь.
Спасибо, но предложиле несколько лучше решение
all, я Ктулху, или строку 3 в приведенном куске кода можно выкинуть?
Почему? Первые 2 строки для получения часов в переменную, вторые 2 для получения минут
Почему? Первые 2 строки для получения часов в переменную, вторые 2 для получения минут
Ну да - считываем информацию в переменную temp2, а минуты извлекаем из temp...
Да, точно сразу не понял о чем вы, память нужно экономить))
Добрый день. Использовал библиотеку, которую выложили в первом посту.
Взял оттуда пример DS1307_LCD, только пины перставил, согласно своего подключения.
Индикатор завелся без проблем, а вот часы все равно показывают всякую муру
На экране постоянно светится:
27:85:85
ххх 85.85.2165
Пробовал другие примеры с СОМ портом, но там тоже самое время.
Вывод SDA подключил на 8 пин
Вывод SCL подключил на 9 пин
Вывод DS подключил на 2 пин
В других источниках SDA и SCL цепляют на аналоговые пины (4 и 5), а DS на 2. пробовал такое подключение, все равно не работает.
Подскажите в чем проблема, куда копать?
Заработало. Не понимаю, почему на этих пинах не работало. поставил на 9 и10, все заработало.
Вывод SDA подключил на 9 пин
Вывод SCL подключил на 10 пин
Естественно подправил код:
Прочитав кучу литературы, выяснил, что пин DS нужен для считывания показания с датчика температуры, который не распаян на шилде.
А у меня получился еще проще код для отображения времени на LCD
Здравствуйте. Тоже пытаюсь сообразить часы с RTC модулем на 4 числовом 7 сегментном индикаторе.
В интернете нашел примерчик работы с индикатором, там тикает счетчик. Единственное немного переделал под свои пины и у меня общий катод, а в основном примеры с общим анодом. Вот:
Установка времени на RTC модуль и вывод в последовательный порт тоже вышли благорадя примерам. Сутки без подключения к компу ( на батарейке другими словами) пролежал, сегодня подключил - время корректное.
Теперь мне необходимо придумать алгоритм, который будет считывать минуты и часы, и выводить через switch...case время на дисплей. Наверное надо завести переменную, а потом как то пробегать циклом for (int i=0; i<10, i++) выводить нужную цифру на дисплей через case, но тут уже я уверен сразу ошибка: часы и минуты считываются в двух символьном варианте....
В общем буду рад любой помощи. Заранее спасибо.
Так возьмите для часов библиотеку, которая в десятичном формате возвращает. Здесь прилепить не знаю как, могу сбросить.
Почему? Первые 2 строки для получения часов в переменную, вторые 2 для получения минут
тут фишка в том, что значения считанные с temp2 будут совершенно теже, что и в temp. Обратите внимание, что возвращаются не данные, а ссылка на данные. А данные хранятся во внутренней переменной библиотеки RTC, поэтому и temp и temp2 будут ссылаться на одни и тее данные
строка 3 лишняя. Смысл повторно считывать данные из RTC если между 2 и 3 строкой не пройдет не то что минуты, даже секунды не пройдет, если строу 3 убрать - ничего не изменится
Так возьмите для часов библиотеку, которая в десятичном формате возвращает. Здесь прилепить не знаю как, могу сбросить.
Вроде как там и так перевариваемый тип. У меня проблемы с реализацией самого алгоритма и отправки его в функцию displayNumber.
У меня появилась идея c целочисленным и остатком от делений, примерно следующая: Берем из RTC переменные tm.Hour, tm.Minute, вводим 4 переменные int a,b,c,d ; int a = tm.Hour/10 , int b = tm.Hour %10 , аналогично с минутами. И потом это как то передать на дисплей.