#include <LiquidCrystal.h>//库文件
#include <Servo.h>
#include <DFRobot_DS1307.h>
DFRobot_DS1307 DS1307;
#define SERVO_PIN 6 //定义舵机引脚
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//lcd引脚
Servo lockServo;
void setup() {
lcd.begin(16, 2); //初始化lcd
lockServo.attach(SERVO_PIN);//配置舵机引脚
Serial.begin(115200);
// Initialize sensor
while( !(DS1307.begin()) ){
Serial.println("failed");
}
DS1307.setTypeTime(DS1307.eYR, 2000);
Serial.print("get type time: ");
Serial.println(DS1307.getTypeTime(DS1307.eYR));
DS1307.stop();
uint16_t setTimeBuff[7] = {50, 25, 14, 7, 7, 1, 2024};//设置当前时间
DS1307.setTime(setTimeBuff);
DS1307.start();
DS1307.setSqwPinMode(DS1307.eSquareWave_1Hz);
}
int time_h=14; //设置闹钟时间
int time_m=25;
void loop() {
if(DS1307.eSquareWave_1Hz == DS1307.getSqwPinMode()){
//Serial.print("SQW/OUT pin: 1Hz | ");
}
uint16_t getTimeBuff[7] = {0};
DS1307.getTime(getTimeBuff);//读取时间
char outputarr[128];
sprintf(outputarr, "%d/%d/%d-%d\r\n",//读取日期
getTimeBuff[6],
getTimeBuff[5],
getTimeBuff[4],
getTimeBuff[3]
);
char outputarr2[128];
sprintf(outputarr2, "%d:%d:%d\r\n",//读取时间
getTimeBuff[2],
getTimeBuff[1],
getTimeBuff[0]
);
Serial.print(outputarr);//串口打印时间
Serial.println(outputarr2);
lcd.setCursor(0, 0);
lcd.print(outputarr);//lcd显示时间
lcd.setCursor(0, 1);
lcd.print(outputarr2);
if(time_h==getTimeBuff[2]&&time_m==getTimeBuff[1])//时间到舵机打开
{
lockServo.write(180);
}
else lockServo.write(0); //舵机关闭
delay(1000);
}