#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <DHT.h>
volatile int HOUR;
volatile int MIN;
volatile int second;
volatile int light;
volatile int nian;
volatile int yue;
volatile int ri;
volatile int anniu__;
volatile int naozhongshishezhi;
volatile int FEN;
LiquidCrystal_I2C mylcd(0x27,20,4);
Servo servo_3;
DHT dht0(0, 22);
void shezhishijiannianyueri() {
shishezhi();
minshezhi();
nianshezhi();
yueshizhi();
rishezhi();
chongzhe();
}
void shishezhi() {
if (digitalRead(2) == HIGH) {
HOUR = HOUR + 1;
if (HOUR > 23) {
HOUR = 0;
}
}
if (digitalRead(1) == HIGH) {
HOUR = HOUR - 1;
if (HOUR < 0) {
HOUR = 23;
}
}
}
void minshezhi() {
if (digitalRead(4) == HIGH) {
MIN = MIN + 1;
if (MIN > 59) {
MIN = 0;
}
}
if (digitalRead(5) == HIGH) {
MIN = MIN - 1;
if (MIN < 0) {
MIN = 59;
}
}
}
void shijian_nian_yue_ri() {
light = analogRead(A0);
// 1秒
delay(1000);
mylcd.clear();
second = second + 1;
if (second > 59) {
second = 0;
MIN = MIN + 1;
if (MIN > 59) {
MIN = 0;
HOUR = HOUR + 1;
if (HOUR > 23) {
HOUR = 0;
ri = ri + 1;
if (ri > 29) {
ri = 0;
yue = yue + 1;
if (yue > 12) {
yue = 0;
nian = nian + 1;
}
}
}
}
}
mylcd.setCursor(1-1, 1-1);
mylcd.print(String(HOUR) + String(":") + String(MIN) + String(":") + String(second));
mylcd.setCursor(1-1, 2-1);
mylcd.print(String("linght:") + String(light) + String(" ") + String(nian) + String("/") + String(yue) + String("/") + String(ri));
mylcd.setCursor(1-1, 3-1);
mylcd.print(String("NAOLINGSHIJIAN:") + String(naozhongshishezhi) + String(":") + String(FEN));
mylcd.setCursor(1-1, 4-1);
mylcd.print(String("WENDU") + String(dht0.readTemperature()));
if (HOUR >= 0 && HOUR < 6) {
servo_3.write(90);
delay(0);
mylcd.setCursor(1-1, 4-1);
mylcd.print(String("WENDU") + String(dht0.readTemperature()) + String("WANAN"));
} else {
servo_3.write(0);
delay(0);
}
}
void NAOLINGSHEZHIFENZHONG() {
if (digitalRead(13) == HIGH) {
naozhongshishezhi = naozhongshishezhi + 1;
}
if (digitalRead(A1) == HIGH) {
FEN = FEN + 1;
}
if (digitalRead(A2) == HIGH) {
FEN = 0;
naozhongshishezhi = 0;
}
}
void yueshizhi() {
if (digitalRead(8) == HIGH) {
yue = yue + 1;
if (yue > 12) {
yue = 0;
}
}
if (digitalRead(9) == HIGH) {
yue = yue - 1;
if (yue < 0) {
yue = 12;
}
}
}
void rishezhi() {
if (digitalRead(10) == HIGH) {
ri = ri + 1;
if (ri > 30) {
ri = 0;
}
}
if (digitalRead(11) == HIGH) {
ri = ri - 1;
if (ri < 0) {
ri = 30;
}
}
}
void nianshezhi() {
if (digitalRead(6) == HIGH) {
nian = nian + 1;
}
if (digitalRead(7) == HIGH) {
nian = nian - 1;
if (nian < 0) {
nian = 1;
}
}
}
void chongzhe() {
if (digitalRead(12) == HIGH) {
HOUR = 0;
MIN = 0;
second = 0;
nian = 2023;
yue = 6;
ri = 1;
light = 0;
}
}
void NAOLING() {
if (HOUR == naozhongshishezhi && MIN == FEN) {
pinMode(A3, OUTPUT);
tone(A3,131);
delay(500);
} else {
pinMode(A3, OUTPUT);
noTone(A3);
}
}
void setup(){
HOUR = 23;
MIN = 59;
second = 50;
light = 0;
nian = 2023;
yue = 6;
ri = 1;
anniu__ = 0;
naozhongshishezhi = 0;
FEN = 0;
mylcd.init();
mylcd.backlight();
servo_3.attach(3);
servo_3.write(0);
delay(0);
pinMode(2, INPUT);
pinMode(1, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(A0, INPUT);
dht0.begin();
pinMode(13, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(12, INPUT);
}
void loop(){
shijian_nian_yue_ri();
shezhishijiannianyueri();
NAOLINGSHEZHIFENZHONG();
NAOLING();
}