подключил часы к ардуино и с помощью этого скетча загрузил время. все показывает и работает замечательно Код (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); } но есть необходимость выставить время не с помощью ARDUINO IDE, а с помощью кнопок на самом устройстве. Вопрос: как реализовать подобную установку?
есть мысль использовать Код (C++): // метод установки времени и даты в модуль вручную // clock.set(10,25,45,27,07,2005,THURSDAY); где вместо значений указать переменные чтото типа такого Код (C++): // метод установки времени и даты в модуль вручную // clock.set(h,m,00,d,months,y,w); и передавать в эти переменные значения к примеру потенциометром на аналоговом входе. пока чтото такое. но для этого нужно 6 потенциометров я так понимаю. а это уже не оч рентабельно. может есть еще какие-то идеи?
берем две кнопки, первая часы, вторая минуты.. в цикле условие, если надавили на первую кнопку, смотрим текущее время, прибавляем к часам единицу и устанавливаем в модуль.. с минутами также
а как вообще идея с записью в переменные. Я много тем посмотрел но там столько кода , что черт ногу сломит. Если моя идея сработает то помоему будет гораздо проще реализовать
я правильно понял должно получиться чтото вроде этого Код (C++): if (analogRead>50&&analogRead<100) { h=h++; clock.set(h, , , , , , ) } при условии что на аналоговый вход при нажатии конкретной кнопки подается значение от 50 до 100
Не понятно, зачем analogRead, когда есть digitalRead. Кнопкой подтягиваешь пин к земле и получаешь LOW, кнопку отпустил - через подтягивающий резистор получаешь на пине HIGH. Только не забудь про дребезг.
дело в том что я хочу на один пин подсоединить сразу несколько кнопок чекрез последовательно соединенные резисторы, мол замыкание определенной кнопки будет соответственно давать разные значения, а контроллер исходя из этих значений будет понимсать какая кнопка нажата. но пока это теория, ща учу про прерывания, чтоб понимать как остановить вывод значений с часов и потом загрузить установку новых значений.
Аааа, тогда понятно. Вот тут про это можно почитать http://greenoakst.blogspot.ru/2012/06/arduino.html
в RTC тройка модуле есть возможность установить время вручную, на вики есть код с описанием и вот что там написано Код (C++): // метод установки времени и даты в модуль вручную // clock.set(10,25,45,27,07,2005,THURSDAY); // метод установки времени и даты автоматически при компиляции //clock.set(__TIMESTAMP__); так вот если использовать clock.set(__TIMESTAMP__), то время устанавливается и все норм, но если использовать установку времени вручную то компилятор ругается на последний параметр THURSDAY, и конечно же время не устанавливается. как быть? как вручную в таком случае установить время на тройка модуле RTC?
с цыфрой прокатывает, скетч компилируется, но еще не проверял что выдаст в сериал, нет ардуины под рукой