Часы и COM порт
- Войдите на сайт для отправки комментариев
Втр, 31/03/2015 - 17:08
Здравствуйте форумчане! Хотел бы с Вами посоветоваться на счет настройки часов через Serial.port не используя кнопки. Возможно ли это и как это риалезовать?
Данный код Товарища LEVV2006 идельно подходит для меня не вызывая багов.
#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;
getDateDs1307(&second, &minute, &hour);
Serial.print(hour, DEC);
Serial.print(":");
Serial.print(minute, DEC);
Serial.print(":");
Serial.println(second, DEC);
delay(1000);
}
В данном участке есть настройка в режиме Setup где можно установить время. Можно это завести в функцию и вызывать если это нужно но уже с настройкой времени через ком порт.
byte second, minute, hour; Wire.begin(); Serial.begin(9600); second = 45; minute = 3; hour = 7; setDateDs1307(second, minute, hour);
Как это реализовать дайте хоть малое преставление.
Спасибо!
#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; getDateDs1307(&second, &minute, &hour); Serial.print(hour, DEC); Serial.print(":"); Serial.print(minute, DEC); Serial.print(":"); Serial.println(second, DEC); delay(1000); }