посоветуйте библиотеку для DS1307
- Войдите на сайт для отправки комментариев
Чт, 23/01/2014 - 11:04
чтоб работала с wire.h
и была возможность записывать в память DS1307
начинал работать с одной библиотекой, устраивала полностью, решил значения сохранять в DS1307, в библиотеке нет функций...
нашел другую, работает без библиотеки wire.h, но может записывать и читать память DS1307, подключил на I2C барометр, часы... часы отказываются работать...
есть ли библиотека для DS1307 которая работает с wire.h и читает/сохраняет ячейки в DS1307?
Можно без библиотеки обойтись. Вот код, уже выкладывали где-то здесь на форуме.
#include "Wire.h" #define DS1307_I2C_ADDRESS 0x68 byte decToBcd(byte val) { return ( (val/10*16) + (val%10) ); } byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); } void setDateDs1307( // Ф-ция установки времени byte second, // 0-59 byte minute, // 0-59 byte hour) // 0-99 { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.write(decToBcd(second)); Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.endTransmission(); } void getDateDs1307( // Ф-ция получения времени byte *second, byte *minute, byte *hour) { Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 3); *second = bcdToDec(Wire.read()); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read()); } void setup() { byte second, minute, hour; Wire.begin(); Serial.begin(9600); second = 45; minute = 3; hour = 7; setDateDs1307(second, minute, hour); } void loop() { byte second, minute, hour, sec; getDateDs1307(&second, &minute, &hour); Serial.print(hour); Serial.print(":"); Serial.print(minute, DEC); Serial.print(":"); Serial.println(second); delay(1000); }