Часы и COM порт

44
44 аватар
Offline
Зарегистрирован: 12.01.2015

 

Здравствуйте форумчане! Хотел бы с Вами посоветоваться на счет настройки часов через 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);

Как это реализовать дайте хоть малое преставление.

Спасибо!

44
44 аватар
Offline
Зарегистрирован: 12.01.2015
#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);
}

 

 byte second, minute, hour;
Wire.begin();
Serial.begin(9600);

second = 45;
minute = 3;
 hour = 7;

setDateDs1307(second, minute, hour);