Проблемы с RTC

Тема в разделе "Arduino & Shields", создана пользователем Kosss, 3 окт 2015.

Метки:
  1. Kosss

    Kosss Нерд

    Здравствуйте. Пришел мне RTC модуль. Подключаю к уне с кодом из библиотеки и выдает такое:
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    45:mad:5:85--@5.@5.2165--»@5.@5.2
    Допустим 45 это минуты. тогда @5 это часы. 65 значит миллисекунды. Вообщем ооочень странно.
    Как с этим бороться? Время вроде должно выставляться при компиляции.
    И еще ни в какую не работает с megой. Не возвращает ничего
     
  2. vvr

    vvr Инженерище

    какая библиотека
    какой код
    45:mad:5:85--@5.@5.2165--»@5.@5.2 - а это что за бред:)
     
  3. Kosss

    Kosss Нерд

    Код из библиотеки. А выдает он, как я понимаю, время
    Код (C++):
    // библиотека для работы I²C
    #include <Wire.h>
    // библиотека для работы с часами реального времени
    #include "TroykaRTC.h"

    // EEPROM — энергонезависимая память
    // библиотека для записи и считывания информации с EEPROM
    #include <EEPROM.h>

    // размер массива для времени с учётом завершающего нуля
    #define LEN_TIME 12
    // размер массива для даты с учётом завершающего нуля
    #define LEN_DATE 12
    // размер массива для дня недели с учётом завершающего нуля
    #define LEN_DOW 12

    // создаём объект для работы с часами реального времени
    RTC clock;

    void setup()
    {
      // открываем последовательный порт
      Serial.begin(9600);
      // инициализация часов
      clock.begin();
      // метод установки времени и даты в модуль вручную
      // clock.set(10,25,45,27,07,2005,THURSDAY);
      // метод установки времени и даты автоматически при компиляции
      clock.set(__TIMESTAMP__);
    }

    void loop()
    {
      // массив для хранения текущего времени
      char time[LEN_TIME]={0};
      // массив для хранения текущей даты
      char date[LEN_DATE]={0};
      // массив для хранения текущего дня недели
      char dow[LEN_DOW]={0};

      // запрашиваем данные с часов
      clock.read();

      // сохраняем текущее время в массив time
      clock.getTimeStr(time, LEN_TIME);
      // сохраняем текущую дату в массив date
      clock.getDateStr(date, LEN_DATE);
      // сохраняем текущий день недели в массив dow
      clock.getDOWStr(dow, LEN_DOW);

      // выводим в serial порт текущее время, дату и день недели
      Serial.print(time);
      Serial.print("--");
      Serial.print(date);
      Serial.print("--");
      Serial.println(dow);

      // ждём одну секунду
      delay(1000);
    }
     
  4. egordorichev

    egordorichev Гик

    В окне Serial какая скорость выставлена? Возможно, ошибка из-за этого.
     
  5. Kosss

    Kosss Нерд

    Нормальная 9600. При отсутствии батарейки выдает все тоже самое.
     
  6. Kosss

    Kosss Нерд

    [​IMG]Эта схема неправильная!!!
    [​IMG]
    SCL и SDA находятся в другом месте.
     
  7. Kosss

    Kosss Нерд

    Теперь работает. Но статью надо исправить!!!
     
  8. geher

    geher Гуру

    Схема правильная для леонардоподобных плат. У них SDA-SDL это как раз пины 2-3, в отличие от уны.
    Подозреваю, что схему рисовали под искру нео.
     
    egordorichev нравится это.
  9. Kosss

    Kosss Нерд

    Самая популярная плата уно. Так что хотя бы приписочку нужно сделать
     
  10. сам ты неправильный, на леонардо (искре) они именно там и находятся.
     
  11. PRince_SOT

    PRince_SOT Нуб

    Я конечно всё понимаю, но зачем эти пины данных на землю пускать? Перетыкиваем на "полоску" с указанием D и будет щасте.