не изменяется время
- Войдите на сайт для отправки комментариев
Пт, 26/11/2021 - 02:43
Столкнулся с такой проблемой: DS1302, не идет. при таком коде выводит на экране 00-00-2000, что надо вписать,что бы пошел отсчет и как задать время?
======================================
Функция millis() это отдельный таймер-счетчик, который не связан с циклом loop. Очень маловероятно, что " if (millis() % 1000 == 0)" будет верно, так как при обращении к millis() будет 998, а следующей итерацией loop() 25(как пример).
int timerDelay=0; void loop() { :begin timerDelay=millis(); :timer if(millis()-timerDelay>1000) { lcd.print(что-то);//и потом курсор поставить в 0 goto begin; } goto timer; }Вот как-то так должно выглядеть. Можно помидорами покидать за goto :D
WasaBisa а чего код не правильно вставляете ? Не уважаете форумчан ?
Почему не полностью украли код ? Где вызов ... .settime( .... ?
нет! метки пишем по арабски )))
метки пишем по арабски )))
Вона как! А я то думал, что это "по-еврейски" :(
Вона как! А я то думал, что это "по-еврейски" :(
тут мои компетенции равны нулю, это к дракуле )))
Вона как! А я то думал, что это "по-еврейски" :(
Я бы попросил... Когда меня жена обзывает евреем, я вынужден отбиваться.( Вот так и здесь.
Почему отбиваться? Вы не еврей?
Меня вот приятели евреи регулярно антисемитом обзывают, так я уже и не отбиваюсь :-)
Почему отбиваться? Вы не еврей
Об этом история умалчивает.)
Но жене я отвечаю, что может быть я и еврей, но видать я не настоящий еврей, ибо ты жила бы в шоколаде.)
попробовал такой код,но все без изменений,только при отключении rst от rts1302 начинают меняться параметры но рандомные #include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1302, 10, 11, 12); #include <Wire.h> #include "LiquidCrystal.h" const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 7, d7 = 6; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { delay(300); // задержка в 300мс перед началом инициализации Serial.begin(9600); // устанавливаем скорость передачи данных с модулей в 9600 бод time.begin(); // функция служит для инициализации работы модуля // Ниже у нас прописываются временные значения в виде секунд, минут, часов, даты, включая месяц и год time.settime(10, 10, 10, 4, 10, 17, 3); lcd.begin(16, 2);// lcd.setCursor(0, 0); //снала x потом y } void loop() { Serial.begin(9600); // если прошла 1 секунда выводим время на дисплей if (millis() % 1000 == 0) { lcd.setCursor(3, 0); //настройка позиции вывода на экране lcd.print(time.gettime("d-m-Y")); // Выводим время. lcd.setCursor(1, 1); //Надо так! lcd.print(time.gettime("H:i:s, D")); delay(1); } }Вам же сказали, что конструкция
работать не будет НИКОГДА. Потому у вас время на экране и не изменяется
И Serial.begin() должен находиться в сетапе, а не в лупе
Как вариант, сначала попробовать пример из библиотеки без изменений, для проверки модуля и
#include <iarduino_RTC.h> // Подключаем библиотеку iarduino_RTC для работы с модулями реального времени. // iarduino_RTC time(RTC_DS1302, 2, 3, 4); // Объявляем объект time для работы с RTC модулем на базе чипа DS1302, указывая выводы Arduino подключённые к выводам модуля RST, CLK, DAT // iarduino_RTC time(RTC_DS1307); // Объявляем объект time для работы с RTC модулем на базе чипа DS1307, используется аппаратная шина I2C iarduino_RTC time(RTC_DS3231); // Объявляем объект time для работы с RTC модулем на базе чипа DS3231, используется аппаратная шина I2C // void setup(){ // delay(300); // Ждем готовности модуля отвечать на запросы Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бод. time.begin(); // Инициируем работу с модулем. } // void loop(){ // if(millis()%1000==0){ // Если прошла 1 секунда. Serial.println(time.gettime("d-m-Y, H:i:s, D")); // Выводим время. delay(1); // Приостанавливаем скетч на 1 мс, чтоб не выводить время несколько раз за 1мс. } // } // //подключения
С подключением видимо проблема, вот и виснет.
Как по мне(возможно ошибаюсь) код должен исполняться, т.к. цикл loop, если условие if не верно, короче миллисекунды, и ни одной не пропустит
Код скорее всего виснет в момент установки или запроса времени.
WasaBisa, неплохо было бы рассказать, как у Вас модуль часов к ардуине подключен. А то может здесь, как и в Вашей теме про 1602, в скетче используются пины, к реальному подключению не имеющие никакого отношения?
исправил,но теперь только белые квадраты
А в порт что выдается ???
А в порт что выдается ???
Как я понимаю - ничего. Поскольку софтина не переписана.
Переписал код и проверил все подключения,отсчет начался теперь дата 19-00-2000,а время потихоньку тикает,но возник вопрос как установить желаемое время
// подключение часов #include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1302,12,10,11); // для модуля DS1302 - RST, CLK, DAT // подключение экрана #include "LiquidCrystal.h" const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 7, d7 = 6; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { delay(300); Serial.begin(9600); time.begin(); time.settime(30,18,12,6,20,5); // 0 сек, 30 мин, 18 часов, 12, июня, 2020, четверг lcd.begin(16, 2); } void loop() { // если прошла 1 секунда выводим время lcd.setCursor(3, 0); //настройка позиции вывода на экране lcd.print(time.gettime("d-m-Y")); // Выводим время. lcd.setCursor(1, 1); // lcd.print(time.gettime("H:i:s, D")); delay(1); }Посмотрите на строку 12.
А именно на аргументы у функции и комментарий после неё. А ещё конкретнее на количество аргументов.
ЗЫ: Оно вообще у вас компилируется?
Секунды должны быть ОБЯЗАТЕЛЬНО
компилируется,если вбивать что после комментария,то выводит 22-00-2000
00:17:00(секунды идут), sat
компилируется,если вбивать что после комментария,то выводит 22-00-2000
00:17:00(секунды идут), sat
Я бы делал так:
Скетч из библиотеки #12(согласовать пины, что нужно раскомментировать) запустить без дисплея и посмотреть работу модуля в мониторе, например
https://роботехника18.рф/%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80-%D0%BF%D0%BE%D1%80%D1%82%D0%B0-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/
Проверить установку времени и даты
Если всё норм, копать дальше
Столкнулся с такой проблемой: DS1302, не идет. при таком коде выводит на экране 00-00-2000, что надо вписать,что бы пошел отсчет и как задать время?
Прикольный модуль, у меня так и не заработал как надо. Пользуюсь всегда другим.