Иду дальше по плану. Высокоточные часы. Тут все было предельно просто - на странице интернет-магазина сразу имелась ссылка на библиотеки. Распаковал, установил файлы из папки DS3231_TEST, запустил скетч из примера... Замечательный девайс! Показывает время и температуру. А наличие батарейки позволяет таймеру работать и без подключения к компьютеру.
Вот упрощенный текст скетча
#include DS3231.h
#include Wire.h
DS3231 Clock;
bool Century=false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;
void setup() {
// Start the I2C interface
Wire.begin();
Clock.setSecond(50);//Set the second
Clock.setMinute(59);//Set the minute
Clock.setHour(11); //Set the hour
Clock.setDoW(5); //Set the day of the week
Clock.setDate(31); //Set the date of the month
Clock.setMonth(5); //Set the month of the year
Clock.setYear(13); //Set the year (Last two digits of the year)
// Start the serial interface
Serial.begin(9600);
}
void loop() {
int second,minute,hour,date,month,year,temperature;
second=Clock.getSecond();
minute=Clock.getMinute();
hour=Clock.getHour(h12, PM);
date=Clock.getDate();
month=Clock.getMonth(Century);
year=Clock.getYear();
temperature=Clock.getTemperature();
Serial.print("20");
Serial.print(year,DEC);
Serial.print('-');
Serial.print(month,DEC);
Serial.print('-');
Serial.print(date,DEC);
Serial.print(' ');
Serial.print(hour,DEC);
Serial.print(':');
Serial.print(minute,DEC);
Serial.print(':');
Serial.print(second,DEC);
Serial.print('\n');
Serial.print("Temperature=");
Serial.print(temperature);
Serial.print('\n');
delay(1000);
}
И схема подключения. Аналогична схеме подключения LCD.
Следующий шаг - заставить работать два устройства I2C на одной паре проводов. Т.е. чтобы часы выводили данные на LCD, а не через виртуальный COM-порт в среду разработки. Как разберусь - напишу. ;)
Как Вы считаете, чего туда память засунули?
ОтветитьУдалитьПросто место было, для работы часов внешняя память не нужна
УдалитьА часы зачёт, сам юзаю такие
Как установить время на часах? Есть примеры скетчей?
ОтветитьУдалитьФункции Clock.set* позволяют устанавливать даты и время. Собственно, сам скетч можно посмотреть выше. :о)
УдалитьКак установить при старте есть много скетчей, а вот установка в процессе работы часов практически не представлена. Ну не писать же в микросхему данные после каждого нажатия на кнопочки?!
УдалитьЕдинственно представляется мне на время коррекции забыть об обновлении информации из микросхемы, установить часы как нужно, а потом все вместе записать в память.
Нужно отслеживать нажатия, паузу между ними, да много чего, может даже в программе считать минуты с секундами, изредка поправляя показания из микросхемы...
В общем вариантов масса, а готового скетча нема
Спасибо! Наконец выставил время
ОтветитьУдалитьEEPROM на плате, как мне кажется, для записи в нее информации о термокалибровочной кривой DS3231. Типа таблицы из двух столбцов - температура и значение "Aging offset" из ячейки 0x10h памяти DS3231. Для "комнатных" применений, понятное дело, она не нужна, но если ваша Ардуинка решит прокатиться по морозу (до -40, если Даллас, т.е. Максим не врёт), то уже без таблички никак... 8-)
ОтветитьУдалитьУ меня DS18B20 уже при -18 где-то тух и не отдавал ничего. :(
УдалитьЗначит реализация 1-wire кривая, у этих датчиков времянки по шине очень сильно от температуры зависят. Но, на работе добивался их стабильной работы во всем заявленном диапазоне, -55 - 125, специально в климатической камере испытывали.
Удалитькратко и доходчиво. Все получилось благодарю.
ОтветитьУдалить"
ОтветитьУдалитьСледующий шаг - заставить работать два устройства I2C на одной паре проводов. Т.е. чтобы часы выводили данные на LCD, а не через виртуальный COM-порт в среду разработки.
"
Ответом на это предложение хочу сказать, что у модуля реального времени (в моем случае zs-042) есть 4 контакта I2C которые не имеют явных разъемов, но которые можно припаять. Схема подключения такова, от LCD I2C подключаются к I2C интерфейсу модуля часов, а от модуля часов от других контактов (которых 6 штук) к ардуине. Питание 5в на часах подключал и все нормально работало. И вся схема работает, на практике проверял.
вот тут ссылка на картинку которая показывает то, что я описал. http://www.goodliffe.org.uk/arduino/pictures/i2c_devices.jpg
УдалитьКак посмотреть данные, которые были полученые через ds3231 ?
ОтветитьУдалитьПомогите пожалуйста, как сделать код, чтобы данные пересылаются в отдельный файл?
ОтветитьУдалить