#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <Keypad.h>
volatile int HOUR;
volatile int MINUT;
volatile int second;
volatile int light;
String item;
LiquidCrystal_I2C mylcd(0x27,20,4);
Servo servo_3;
const byte KEYPAD_4_4_ROWS = 4;
const byte KEYPAD_4_4_COLS = 4;
char KEYPAD_4_4_hexaKeys[KEYPAD_4_4_ROWS][KEYPAD_4_4_COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte KEYPAD_4_4_rowPins[KEYPAD_4_4_ROWS] = {13, 12, 11, 10};
byte KEYPAD_4_4_colPins[KEYPAD_4_4_COLS] = {9, 8, 6, 5};
Keypad KEYPAD_4_4 = Keypad(makeKeymap(KEYPAD_4_4_hexaKeys), KEYPAD_4_4_rowPins, KEYPAD_4_4_colPins, KEYPAD_4_4_ROWS, KEYPAD_4_4_COLS);
void setup(){
HOUR = 0;
MINUT = 0;
second = 0;
light = 0;
item = "";
mylcd.init();
mylcd.backlight();
servo_3.attach(3);
pinMode(1, OUTPUT);
Serial.begin(9600);
servo_3.write(0);
delay(10);
digitalWrite(1,HIGH);
pinMode(A0, INPUT);
pinMode(7, OUTPUT);
}
void loop(){
light = analogRead(A0);
mylcd.setCursor(1-1, 1-1);
mylcd.print(String(HOUR) + String(":") + String(MINUT) + String(":") + String(second));
mylcd.setCursor(1-1, 2-1);
mylcd.print(String("light:") + String(light));
delay(10);
mylcd.clear();
second = second + 1;
if (second > 59) {
second = 0;
MINUT = MINUT + 1;
if (MINUT > 59) {
MINUT = 0;
HOUR = HOUR + 1;
if (HOUR > 23) {
HOUR = 0;
}
}
}
if (MINUT > 3 && MINUT < 7) {
digitalWrite(1,LOW);
if (light > 40) {
mylcd.setCursor(1-1, 3-1);
mylcd.print("shuijiaoba");
tone(7,3951);
} else {
noTone(7);
mylcd.clear();
}
servo_3.write(90);
delay(10);
}
if (MINUT > 10 && MINUT < 14) {
servo_3.write(0);
delay(10);
digitalWrite(1,HIGH);
if (light < 40) {
mylcd.setCursor(4-1, 4-1);
mylcd.print("qilaiba");
tone(7,3951);
item = String(item) + String(String(KEYPAD_4_4.getKey()));
Serial.println(item);
if (item == "123456") {
noTone(7);
mylcd.clear();
}
} else {
tone(7,3951);
}
}
}