Часы ds 3231

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

  1. rf68

    rf68 Нерд

     
  2. rf68

    rf68 Нерд

    загрузил новый кусок кода. Всё работает. И антиотравление тоже
     
  3. fogary

    fogary Гик

    "Антиотравление" сами прикрутили? Тестовый код можно не выкладывать?
     
  4. rf68

    rf68 Нерд

    да методом "Научного тыка"
     
  5. rf68

    rf68 Нерд

    Спасибо за помощь!
     
  6. ImrDuke

    ImrDuke Гик

    Подскажите как правильно хранить значения времени?
    Т.е. вкл - 9:30, а выкл - 10:00 и так несколько промежутков.
     
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    Переводишь все в минуты и хранишь в одной переменной.
     
  8. ostrov

    ostrov Гуру

    int timeX = 930;
     
  9. ImrDuke

    ImrDuke Гик

    Ну значит я правильно думал
    Код (C++):
        // Утро
        On  =  8 * 60 + 30; //08:30
        Off =  9 * 60 + 30; //09:30
        if (IsOnOffTime(On, Off, Curent_Time))
          Temp = 0.2;
        // Утро
     
  10. ostrov

    ostrov Гуру

    Я делаю 9*100+30 так нагляднее. Потом разбираю в обратном порядке.
     
  11. ImrDuke

    ImrDuke Гик

    А можно как то одной процедурой получить дату и время? А не через эту конструкцию?

    Код (C++):
    dataString += String(hm.day()) + '.' + String(hm.month()) + '.' + String(hm.year()); // дата
    dataString += " ";
    dataString += String(hm.hour()) + ':' + String(hm.minute()) + ':' + String(hm.second()); // время
     
  12. b707

    b707 Гуру

    Написать свою процедуру с этой конструкцией внутри, например...чего уж проще.
     
  13. ostrov

    ostrov Гуру

    Нафига String то вообще?
     
  14. ImrDuke

    ImrDuke Гик

    До обновления библиотеки делал так:
    Код (C++):
    dataString += String(rtc.getDateStr());  // дата
    dataString += ";";
    dataString += String(rtc.getTimeStr());  // время
     
  15. b707

    b707 Гуру

    к чему вы это написали?
    Я вам подсказал что делать - напишите свою функцию выдачи времени и даты в нужном формате, ничего в этом сложного нет.
     
  16. ImrDuke

    ImrDuke Гик

    Если есть стандартная, зачем тогда?
     
  17. ImrDuke

    ImrDuke Гик

    Если так написать
    Код (C++):
    dataString += hm.day() + '.' + hm.month() + '.' + hm.year(); // дата
    то в строчке получается: "2141"
     
  18. DIYMan

    DIYMan Guest

    А вы чего ждали - чуда? Компилятор не будет за вас догадываться, что вы хотите: вы попросили его сначала сложить некоторые числовые значения (код символа '.' - тоже суть число), потом - вызвать оператор конкатенации класса String, для типа int. Вот он вам сначала сложил, потом - это число преобразовал в строку. Что написали - то и получили. Если хотите по-другому - пишите по-другому:
    Код (C++):
    dataString += hm.day();
    dataString +=  ".";
    dataString += hm.month();
    dataString += ".";
    dataString += hm.year(); // дата
    Или так:
    Код (C++):
    dataString += String(hm.day()) + "." + String(hm.month()) + "." + String(hm.year()); // дата
    А вообще - для таких случаев прекрасно подходит sprintf, чтобы не было этих извращений с промежуточными объектами и постоянными реаллоками памяти.
     
  19. b707

    b707 Гуру

    затем, что написать свою функцию в 1-2 строки - пара минут вместе с изучением мануала, а вы уже третий день задаете вопросы на форуме...
     
  20. ImrDuke

    ImrDuke Гик

    Так у меня и так было написано и работает. Я спрашивал, можно ли переделать как то красивее?