Ds1302 Help

Тема в разделе "Arduino & Shields", создана пользователем Ibragim, 1 мар 2019.

  1. Ibragim

    Ibragim Нерд

    Доброго времени суток. Ребята помоги мне. Кто нибудь знает в чем проблема у меня, я купил часы ds1302 все три штуки с разного магазина.
    С первого и второго купленного часы. Вообще не возможно даже настроить часы показывает постоянно 2000.00.00 час 00:00:00.
    А на в третьем часы показывают и даже настроит можно часы но дальше не идёт на мёртвой стоит там где как я настроил. Как и первый и второй модулях.
     
  2. a1000

    a1000 Гуру

  3. Ibragim

    Ibragim Нерд

    на одной микросхеме хотя-бы показывает часы то что я поставил. Я переставил эту микрасхема на другие модули там тоже показывают но не идёт часы
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Схема

    [​IMG]
    И Кот
    Код (C++):
    #include <iarduino_RTC.h>                               // подключение библиотеки
    iarduino_RTC time(RTC_DS1302,4,2,3);         // Задаем правильно название нашего модуля, а //также указываем к каким цифровым пинам его подключаем
    void setup() {
        delay(300);                                            // задержка в 300мс перед началом инициализации
        Serial.begin(9600);                              // устанавливаем скорость передачи данных с модулей в 9600 бод
        time.begin();                                       // функция служит для инициализации работы модуля
    // Ниже у нас прописываются временные значения в виде секунд, минут, часов, даты, включая месяц и год, и также можете указать день недели
        time.settime(10,10,10,4,10,17,3);  // 10  сек, 10 мин, 10 час, 4 , октября, 2017 года, среда
    }
    void loop(){
        if(millis()%1000==0) {           //  задержка в одну секунду перед выводом времени в последовательный порт
          Serial.println(time.gettime("d-m-Y, H:i:s, D"));   // выводим время
          delay(1);  // делаем небольшую задержку, чтобы не выводить время слишком часто
        }
    }
     
    Последнее редактирование: 1 мар 2019
  5. DetSimen

    DetSimen Guest

    Аэробус, там еще, памойму, надо старший бит по 0 адресу обнулять/устанавливать(не помню), тогда они пойдут
     
  6. a1000

    a1000 Гуру

    [​IMG]
    А вообще надо брать DS3231. Они на много точнее
     
  7. Ibragim

    Ibragim Нерд

    Помоги исправить одну маленькую ошибку переделал часы на ds3231 но там только год показывают не 2019 а 0019. Я скеч тоже скину
     

    Вложения:

    Последнее редактирование: 2 мар 2019
  8. Ibragim

    Ibragim Нерд

    Часы ds1302 были раньше. мне переделали один парень на ds3231. Там не правильно показывает год 2019 а 0019 показывает. Помоги исправить ошибки буду рад. Спасибо!

     

    Вложения:

  9. Asper Daffy

    Asper Daffy Иксперд

    Господи, ну, напиши ты в строке 455 вместо "now_year" что-нить вроде "now_year+2000" и радуйся.

    Если при этом начнёт показывать 4019 при установке даты, то вместо "now_year+2000" пиши "now_year+(now_year > 1999 ? 0 : 2000)"

    Только вот услуг за услугу.

    Объясни мне, пожалуйста, в чём цимес? Ведь хобби доставляет удовольствие оттого, что сделал сам то, чего ещё вчера не умел. А какой кайф, что кто-то посторонний показал что поменять в тексте, в котором ты не понимаешь ни одной буквы? Для тебя то в чём здесь удовольствие?
     
    Последнее редактирование: 2 мар 2019
    Andrey12 нравится это.
  10. Antony89

    Antony89 Нуб

    Подскажите пожалуйста, в чем ошибка. При компиляции пишет ('hour' was not declared in this scope').

    #include <Servo.h>
    #include <iarduino_RTC.h> // подключение библиотеки
    iarduino_RTC time(RTC_DS1302,8,6,7); // Задаем правильно название нашего модуля, а также указываем к каким цифровым пинам его подключаем(в нашем случае – 8,6,7)
    #include <Wire.h> // библиотека для устройств I2C
    #include <LiquidCrystal_I2C.h> // подключаем библиотеку для дисплея
    #define feed_period
    LiquidCrystal_I2C LCD(0x27,16,2);
    Servo servo1;

    void setup() {
    servo1.attach(5);
    delay(300); // задержка в 300мс перед началом инициализации
    Serial.begin(9600); // устанавливаем скорость передачи данных с модулей в 9600 бод
    LCD.init(); // инициализация LCD дисплея
    LCD.backlight(); // включение подсветки дисплея
    time.begin(); // функция служит для инициализации работы модуля
    // Ниже у нас прописываются временные значения в виде секунд, минут, часов, даты, включая месяц и год, и также можете указать день недели
    //time.settime(25,20,19,13,6,21,6); // 10 сек, 10 мин, 10 час, 4 , октября, 2017 года, среда
    }
    void loop(){


    if(millis()%1000==0) { // задержка в одну секунду перед выводом времени в последовательный порт
    Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время
    LCD.setCursor(0,0);
    LCD.print(time.gettime("d M Y, D"));
    LCD.setCursor(4,1);
    LCD.print(time.gettime("H:i:s"));
    delay(1); // делаем небольшую задержку, чтобы не выводить время слишком часто
    {
    if (hour == 7 && minute == 30 && second == 25);
    {
    servo1.write(0);
    delay(1500);
    servo1.write(90);
    delay(1500);
    }
    }
    }
     
  11. Airbus

    Airbus Радиохулиган Модератор

  12. Airbus

    Airbus Радиохулиган Модератор

    hour не задекларированы/не определены в коде. Можно так
    Код (Text):
      if(time.seconds==25)&&(time.minutes==30)&&(time.Hours==7)
     
  13. akl

    akl Гуру

    надо писать
    time.hour == 7 && time.minute == 30 && time.second == 25

    еще возможно перед этим надо будет сделать
    time.gettime();
    но это не точно
     
    Airbus нравится это.
  14. Antony89

    Antony89 Нуб

    Код (C++):

    #include <Servo.h>
    #include <iarduino_RTC.h>                               // подключение библиотеки
    iarduino_RTC time(RTC_DS1302,8,6,7);         // Задаем правильно название нашего модуля, а также указываем к каким цифровым пинам его подключаем(в нашем случае – 8,6,7)
    #include <Wire.h>                             // библиотека для устройств I2C
    #include <LiquidCrystal_I2C.h>       // подключаем библиотеку для дисплея
    #define feed_period
    LiquidCrystal_I2C LCD(0x27,16,2);
    Servo servo1;

    void setup() {
        servo1.attach(5);
        delay(300);                                            // задержка в 300мс перед началом инициализации
        Serial.begin(9600);                              // устанавливаем скорость передачи данных с модулей в 9600 бод
        LCD.init();            // инициализация LCD дисплея
        LCD.backlight();  // включение подсветки дисплея
        time.begin();                                       // функция служит для инициализации работы модуля
    // Ниже у нас прописываются временные значения в виде секунд, минут, часов, даты, включая месяц и год, и также можете указать день недели
        //time.settime(25,20,19,13,6,21,6);  // 10  сек, 10 мин, 10 час, 4 , октября, 2017 года, среда
    }
    void loop(){

     
           if(millis()%1000==0) {           //  задержка в одну секунду перед выводом времени в последовательный порт
          Serial.println(time.gettime("d-m-Y, H:i:s, D"));   // выводим время
          LCD.setCursor(0,0);
          LCD.print(time.gettime("d M Y, D"));
          LCD.setCursor(4,1);
          LCD.print(time.gettime("H:i:s"));
          delay(1);  // делаем небольшую задержку, чтобы не выводить время слишком часто
          {
      if (time.Hours == 7 && time.minutes == 30 && time.seconds == 25);
      {
      servo1.write(0);
      delay(1500);
      servo1.write(90);
      delay(1500);
    }
    }
          }
     
     
    Последнее редактирование модератором: 9 июл 2021
  15. Antony89

    Antony89 Нуб

    То есть вначале кода нужно дополнительно их определить ?
    например : int VAR_alarm_MIN = 25
     
  16. akl

    akl Гуру

    они уже определены в библиотеке и создаются вместе с классом iarduino_RTC time(RTC_DS1302,8,6,7);
    time - это экземпляр класса iarduino_RTC (типа как структура, только с функциями и круче)
    и в нем есть переменные
    time.hour
    time.minute
    и т.д.
    так же как всякие функции типа time.gettime();
     
  17. Antony89

    Antony89 Нуб

    Да дело в том что он тоже ругается на это ('class iarduino_RTC' has no member named 'hour' )
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Ну можно и так. Это в начале. Можно и прямо в Лоб в самом коде как у Вас и у меня. Но у Вас ошибка не в этом. Надо писать не hour a time.hours и также с минутами и секундами. Компилятор не понимает что такое hour и зачем оно. Ваш правильно выложеный код (пост 14) поправил и теперь попробуйте его скомпилить
     
    Последнее редактирование: 9 июл 2021
  19. akl

    akl Гуру

    дак может не hour, а hours
     
    Airbus нравится это.
  20. Airbus

    Airbus Радиохулиган Модератор

    Так!