int seconds = 0;
#include <EEPROM.h>
#include "RTClib.h"
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo servoA,servoB,servoC,servoD,servoE,servoF;
#define Home 0
#define Dwon 90
#define Open 45
int move_time = 300;
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
DateTime current,alarm1,alarm2,alarm3,alarm4,alarm5,alarm6,alarm7,alarm8,alarm9,alarm10,temp1,temp2,temp3,temp4;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {A0,A1,A2,A3}; //R1,R2,R3,R4
//connect to the column pinouts of the keypad
byte colPins[COLS] = {A4,A5,A6,A7};//C1,C2,C3,C4
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
// Variables
long Counter= 1;
int H,Y,M;
int H1,M1;
int H2,M2;
int H3,M3;
int Alarm_flag1 =0;
int Alarm_flag2 =0;
int Alarm_flag3 =0;
String enteredHour1,enteredHour2,enteredHour3;
String enteredMinute1,enteredMinute2,enteredMinute3;
String AenteredPiilA,AenteredPiilB,AenteredPiilC,AenteredPiilD,AenteredPiilE;
String BenteredPiilA,BenteredPiilB,BenteredPiilC,BenteredPiilD,BenteredPiilE;
String CenteredPiilA,CenteredPiilB,CenteredPiilC,CenteredPiilD,CenteredPiilE;
int ADwonA,ADwonB,ADwonC,ADwonD,ADwonE;
int BDwonA,BDwonB,BDwonC,BDwonD,BDwonE;
int CDwonA,CDwonB,CDwonC,CDwonD,CDwonE;
String Alarm_1;
String Alarm_2;
String Alarm_3;
byte SutunSayac=0; //SutunSayac isimli byte veri türünde değişken ilk değeri 0
byte AlarmSayac=0; //AlarmSayac isimli byte veri türünde değişken ilk değeri 0
const String password_1 = "01"; // change your password here
const String password_2 = "02"; // change your password here
const String password_3 = "03"; // change your password here
const String password_4 = "04"; // change your password here
const String password_5 = "05"; // change your password here
const String password_6 = "06"; // change your password here
const String password_7 = "07"; // change your password here
const String password_8 = "08"; // change your password here
const String password_9 = "09"; // change your password here
const String password_10 = "10"; // change your password here
String input_password;
char key;
int ses_modul=5; //Ses kayıt modülü kontrol ucu 5 nolu pine tanımlandı
int count =0;
String phNumber;
String storedHour;
String storedMinute;
int buzzer = 13;
int flag = 0;
void storeMinute(String);
void storeHour(String);
int ir1 = A8;
int ir2 = A9;
int ir3 = A10;
int ir4 = A11;
int ir5 = A12;
int ir1_flag1 =0;
int ir2_flag1 =0;
int ir3_flag1 =0;
int ir4_flag1 =0;
int ir5_flag1 =0;
int ir1_flag2 =0;
int ir2_flag2 =0;
int ir3_flag2 =0;
int ir4_flag2 =0;
int ir5_flag2 =0;
int ir1_flag3 =0;
int ir2_flag3 =0;
int ir3_flag3 =0;
int ir4_flag3 =0;
int ir5_flag3 =0;
void gpio_init()
{
pinMode(buzzer,OUTPUT);
servoA.attach(2);servoA.write(0); //delay(300); servoA.write(90);delay(300); servoA.write(0);
servoB.attach(3);servoB.write(0); //delay(300); servoB.write(90);delay(300); servoB.write(0);
servoC.attach(4);servoC.write(0); //delay(300); servoC.write(90);delay(300); servoC.write(0);
servoD.attach(5);servoD.write(0); //delay(300); servoD.write(90);delay(300); servoD.write(0);
servoE.attach(6);servoE.write(0); //delay(300); servoE.write(90);delay(300); servoE.write(0);
servoF.attach(7);servoF.write(0); //delay(300); servoF.write(90);delay(300); servoF.write(0);
pinMode(ir1,INPUT);pinMode(ir2,INPUT);
pinMode(ir3,INPUT);pinMode(ir4,INPUT);
pinMode(ir5,INPUT);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
}
//*************************************************
void rtc_init()
{
Wire.begin();
RTC.begin();
if (! RTC.isrunning())
{
lcd.clear();
lcd.print("RTC..X, Init...");
RTC.adjust(DateTime(__DATE__, __TIME__));
delay(500);
}
else
{
//Serial.println(F("RTC : running!"));
lcd.clear();
lcd.print("RTC Init...OK");
delay(500);
}
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
void showDTcurrent()
{
current = RTC.now();
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(current.hour(), DEC);lcd.print(":");lcd.print(current.minute(), DEC);
lcd.print(" ");lcd.print(current.day(), DEC);lcd.print("/");lcd.print(current.month(), DEC);lcd.print("/");lcd.print(current.year(), DEC);
// Serial.print("T : ");Serial.print(current.hour(), DEC);Serial.print(":");Serial.print(current.minute(), DEC);Serial.print(" ");Serial.print(current.day(), DEC);Serial.print("/");Serial.println(current.month(), DEC);
}
void UpdateDTcurrent()
{
current = RTC.now();
H = current.hour();
M = current.minute();
Y = current.year();
}
//************************************************
//EEPROM
long EEPROMReadlong(long address)
{
long four = EEPROM.read(address);
long three = EEPROM.read(address + 1);
long two = EEPROM.read(address + 2);
long one = EEPROM.read(address + 3);
return ((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF);
}
void EEPROMWritelong(int address, long value) {
byte four = (value & 0xFF);
byte three = ((value >> 8) & 0xFF);
byte two = ((value >> 16) & 0xFF);
byte one = ((value >> 24) & 0xFF);
EEPROM.write(address, four);
EEPROM.write(address + 1, three);
EEPROM.write(address + 2, two);
EEPROM.write(address + 3, one);
}
//LCD Functions
void lcd_init()
{
lcd.init();
//lcd.backlight();
lcd.setBacklight(1);
// Print title message to the LCD.
lcd.print(" Smart Pill BOX "); /* Write string on 1st line of LCD*/
lcd.setCursor(0,1); /* Go to 2nd line*/
lcd.print(" "); /* Write string on 2nd line*/
}
// Title of the machine
void LCD_Machine_Title()
{
}
void setup()
{
Serial.begin(9600);
Serial.println("OK");
gpio_init();
input_password.reserve(32);// maximum input characters is 33, change if needed
lcd_init();
delay(500);
lcd.clear();
LCD_Machine_Title();
delay(500);
rtc_init();
Counter = EEPROMReadlong(10);
lcd.clear();
current = RTC.now();
int val = current.second();
int val2 = 3600 - val;
alarm1 = current + val2; //+1hr
alarm2 = current + val2 + 3600; //+2hr
alarm3 = current + val2 + 7200; //+3hr
showDTcurrent();
lcd.setCursor(0,0);
}
String getInputFromKeyBoard(int n) {
String num = "";
String number;
String confirmNumber;
int i = 0;
flag = 1;
while (flag) {
char key = keypad.getKey();
if (key) {
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
if (key == '0' || key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9') {
i++;
if (i <= n) {
num += key;
}
Serial.println(num);
lcd.setCursor(14, 0);
//lcd.clear();
lcd.print(num);
lcd.setCursor(0, 1);
lcd.print("*Cancel #Confirm");
}
if (key == '#' && i == n) {
break;
}
if (key == '*') {
number = "";
confirmNumber = "";
num = "";
return "";
}
}
}
return num;
}
void Manual_funtion()
{
key = keypad.getKey();
if(key == 'B')
{
input_password = "";
AlarmSayac=0;
key=0;
lcd.setCursor(0,0);lcd.print(" ");
count =0;
key=0;
input_password = "";
}
if (key=='*')
{
lcd.setCursor(0,0);
lcd.print("Press Key Alarm ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
count =0;
key =0;
input_password = "";
while(key!='B')
{
key = keypad.getKey();
delay(100);
if(key){
lcd.print(key);
input_password += key;
count ++;
}
if(count==2)
{
key='B';
//count =0;
//key =0;
//input_password = ""; // reset the input password
}
Serial.println(input_password);
}
if (input_password== password_1)
{
count =0;
key =0;
input_password = ""; // reset the input password
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1.ALARM Set");
//showDTalarm1();
lcd.setCursor(0,1);
SutunSayac = 0;
key = keypad.getKey();
while(key!='A')
{
key = keypad.getKey();
delay(100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set Hour:");
enteredHour1 = getInputFromKeyBoard(2);
if (enteredHour1.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set Minute:");
enteredMinute1 = getInputFromKeyBoard(2);
if(enteredMinute1.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set A Angle:");
AenteredPiilA = getInputFromKeyBoard(2);
if (AenteredPiilA.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set B Angle:");
AenteredPiilB = getInputFromKeyBoard(2);
if (AenteredPiilB.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set C Angle:");
AenteredPiilC = getInputFromKeyBoard(2);
if (AenteredPiilC.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set D Angle:");
AenteredPiilD = getInputFromKeyBoard(2);
if (AenteredPiilD.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set E Angle:");
AenteredPiilE = getInputFromKeyBoard(2);
if (AenteredPiilE.length() == 2)
{
//storeHour(enteredHour);
//storeMinute(enteredMinute);
//storedHour = enteredHour;
//storedMinute = enteredMinute;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Alarm1 set to");
lcd.setCursor(0, 1);
Alarm_1 = enteredHour1 + ":" + enteredMinute1 + ":00";
lcd.print(Alarm_1);
H1 = enteredHour1.toInt();
M1 = enteredMinute1.toInt();
ADwonA = AenteredPiilA.toInt();
ADwonB = AenteredPiilB.toInt();
ADwonC = AenteredPiilC.toInt();
ADwonD = AenteredPiilD.toInt();
ADwonE = AenteredPiilE.toInt();
if(ADwonA >= Dwon){ir1_flag1 = 1;}else{ir1_flag1 = 0;}
if(ADwonB >= Dwon){ir2_flag1 = 1;}else{ir2_flag1 = 0;}
if(ADwonC >= Dwon){ir3_flag1 = 1;}else{ir3_flag1 = 0;}
if(ADwonD >= Dwon){ir4_flag1 = 1;}else{ir4_flag1 = 0;}
if(ADwonE >= Dwon){ir5_flag1 = 1;}else{ir5_flag1 = 0;}
delay(2000);
flag =0;
key='A';
}
}
}
}
}
}
}
}
lcd.clear();
}
if (input_password== password_2)
{
input_password = ""; // reset the input password
lcd.clear();
lcd.setCursor(0,0);
lcd.print("2.ALARM Set");
//showDTalarm1();
lcd.setCursor(0,1);
SutunSayac = 0;
key = keypad.getKey();
while(key!='A')
{
key = keypad.getKey();
delay(100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set Hour:");
enteredHour2 = getInputFromKeyBoard(2);
if (enteredHour2.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set Minute:");
enteredMinute2 = getInputFromKeyBoard(2);
if(enteredMinute2.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set A Angle:");
BenteredPiilA = getInputFromKeyBoard(2);
if (AenteredPiilA.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set B Angle:");
BenteredPiilB = getInputFromKeyBoard(2);
if (BenteredPiilB.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set C Angle:");
BenteredPiilC = getInputFromKeyBoard(2);
if (BenteredPiilC.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set D Angle:");
BenteredPiilD = getInputFromKeyBoard(2);
if (BenteredPiilD.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set E Angle:");
BenteredPiilE = getInputFromKeyBoard(2);
if (BenteredPiilE.length() == 2)
{
//storeHour(enteredHour);
//storeMinute(enteredMinute);
//storedHour = enteredHour;
//storedMinute = enteredMinute;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Alarm2 set to");
lcd.setCursor(0, 1);
Alarm_2 = enteredHour2 + ":" + enteredMinute2 + ":00";
lcd.print(Alarm_2);
H2 = enteredHour2.toInt();
M2 = enteredMinute2.toInt();
BDwonA = BenteredPiilA.toInt();
BDwonB = BenteredPiilB.toInt();
BDwonC = BenteredPiilC.toInt();
BDwonD = BenteredPiilD.toInt();
BDwonE = BenteredPiilE.toInt();
if(BDwonA >= Dwon){ir1_flag2 = 1;}else{ir1_flag2 = 0;}
if(BDwonB >= Dwon){ir2_flag2 = 1;}else{ir2_flag2 = 0;}
if(BDwonC >= Dwon){ir3_flag2 = 1;}else{ir3_flag2 = 0;}
if(BDwonD >= Dwon){ir4_flag2 = 1;}else{ir4_flag2 = 0;}
if(BDwonE >= Dwon){ir5_flag2 = 1;}else{ir5_flag2 = 0;}
delay(2000);
flag =0;
key='A';
}
}
}
}
}
}
}
}
lcd.clear();
}
if (input_password== password_3)
{
input_password = ""; // reset the input password
lcd.clear();
lcd.setCursor(0,0);
lcd.print("3.ALARM Set");
//showDTalarm1();
lcd.setCursor(0,1);
SutunSayac = 0;
key = keypad.getKey();
while(key!='A')
{
key = keypad.getKey();
delay(100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set Hour:");
enteredHour3 = getInputFromKeyBoard(2);
if (enteredHour3.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set Minute:");
enteredMinute3 = getInputFromKeyBoard(2);
if(enteredMinute3.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set A Angle:");
CenteredPiilA = getInputFromKeyBoard(2);
if (CenteredPiilA.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set B Angle:");
CenteredPiilB = getInputFromKeyBoard(2);
if (CenteredPiilB.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set C Angle:");
CenteredPiilC = getInputFromKeyBoard(2);
if (CenteredPiilC.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set D Angle:");
CenteredPiilD = getInputFromKeyBoard(2);
if (CenteredPiilD.length() == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*Set E Angle:");
CenteredPiilE = getInputFromKeyBoard(2);
if (CenteredPiilE.length() == 2)
{
//storeHour(enteredHour);
//storeMinute(enteredMinute);
//storedHour = enteredHour;
//storedMinute = enteredMinute;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Alarm3 set to");
lcd.setCursor(0, 1);
Alarm_3 = enteredHour3 + ":" + enteredMinute3 + ":00";
lcd.print(Alarm_3);
H3 = enteredHour3.toInt();
M3 = enteredMinute3.toInt();
CDwonA = CenteredPiilA.toInt();
CDwonB = CenteredPiilB.toInt();
CDwonC = CenteredPiilC.toInt();
CDwonD = CenteredPiilD.toInt();
CDwonE = CenteredPiilE.toInt();
if(CDwonA >= Dwon){ir1_flag3 = 1;}else{ir1_flag3 = 0;}
if(CDwonB >= Dwon){ir2_flag3 = 1;}else{ir2_flag3 = 0;}
if(CDwonC >= Dwon){ir3_flag3 = 1;}else{ir3_flag3 = 0;}
if(CDwonD >= Dwon){ir4_flag3 = 1;}else{ir4_flag3 = 0;}
if(CDwonE >= Dwon){ir5_flag3 = 1;}else{ir5_flag3 = 0;}
delay(2000);
flag =0;
key='A';
}
}
}
}
}
}
}
}
lcd.clear();
}
}
}
void Alarm_chack_withIR()
{
// ALARM 1
if (H == H1 && M == M1)
{
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
if(Alarm_flag1 == 0)
{
lcd.clear();
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print("Alarm1 Pill Time");
servoF.write(Open); delay(500);
servoA.write(ADwonA);delay(200);
if(ir1_flag1 == 1)
{
while(digitalRead(ir1)==HIGH)
{
servoA.write(0);delay(move_time);servoA.write(ADwonA); delay(move_time);
if(digitalRead(ir1)==LOW)
{
}
}
}
servoB.write(ADwonB);delay(200);
if(ir2_flag1 == 1)
{
while(digitalRead(ir2)==HIGH)
{
servoB.write(0);delay(move_time);servoB.write(ADwonB); delay(move_time);
if(digitalRead(ir2)==LOW)
{
}
}
}
servoC.write(ADwonC);delay(200);
if(ir3_flag1 == 1)
{
while(digitalRead(ir3)==HIGH)
{
servoC.write(0);delay(move_time);servoC.write(ADwonC); delay(move_time);
if(digitalRead(ir3)==LOW)
{
}
}
}
servoD.write(ADwonD);delay(200);
if(ir4_flag1 == 1)
{
while(digitalRead(ir4)==HIGH)
{
servoD.write(0);delay(move_time);servoD.write(ADwonD); delay(move_time);
if(digitalRead(ir4)==LOW)
{
}
}
}
servoE.write(ADwonE);delay(200);
if(ir5_flag1 == 1)
{
while(digitalRead(ir5)==HIGH)
{
servoE.write(0);delay(move_time);servoE.write(ADwonE); delay(move_time);
if(digitalRead(ir5)==LOW)
{
}
}
}
Alarm_flag1 = 1;
servoA.write(0);servoB.write(0);servoC.write(0);servoD.write(0);servoE.write(0);servoF.write(0);
}
}
// ALARM 2
if (H == H2 && M == M2)
{
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
if(Alarm_flag2 == 0)
{
lcd.clear();
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print("Alarm2 Pill Time");
servoF.write(Open); delay(500);
servoA.write(BDwonA);delay(200);
if(ir1_flag2 == 1)
{
while(digitalRead(ir1)==HIGH)
{
servoA.write(0);delay(move_time);servoA.write(BDwonA); delay(move_time);
if(digitalRead(ir1)==LOW)
{
}
}
}
servoB.write(BDwonB);delay(200);
if(ir2_flag2== 1)
{
while(digitalRead(ir2)==HIGH)
{
servoB.write(0);delay(move_time);servoB.write(BDwonB); delay(move_time);
if(digitalRead(ir2)==LOW)
{
}
}
}
servoC.write(BDwonC);delay(200);
if(ir3_flag2 == 1)
{
while(digitalRead(ir3)==HIGH)
{
servoC.write(0);delay(move_time);servoC.write(BDwonC); delay(move_time);
if(digitalRead(ir3)==LOW)
{
}
}
}
servoD.write(BDwonD);delay(200);
if(ir4_flag2 == 1)
{
while(digitalRead(ir4)==HIGH)
{
servoD.write(0);delay(move_time);servoD.write(BDwonD); delay(move_time);
if(digitalRead(ir4)==LOW)
{
}
}
}
servoE.write(BDwonE);delay(200);
if(ir5_flag2 == 1)
{
while(digitalRead(ir5)==HIGH)
{
servoE.write(0);delay(move_time);servoE.write(BDwonE); delay(move_time);
if(digitalRead(ir5)==LOW)
{
}
}
}
Alarm_flag2 = 1;
servoA.write(0);servoB.write(0);servoC.write(0);servoD.write(0);servoE.write(0);servoF.write(0);
}
}
// ALARM 3
if (H == H3 && M == M3)
{
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
if(Alarm_flag3 == 0)
{
lcd.clear();
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print("Alarm3 Pill Time");
servoF.write(Open); delay(500);
servoA.write(CDwonA);delay(200);
if(ir1_flag3 == 1)
{
while(digitalRead(ir1)==HIGH)
{
servoA.write(0);delay(move_time);servoA.write(CDwonA); delay(move_time);
if(digitalRead(ir1)==LOW)
{
}
}
}
servoB.write(CDwonB);delay(200);
if(ir2_flag3 == 1)
{
while(digitalRead(ir2)==HIGH)
{
servoB.write(0);delay(move_time);servoB.write(CDwonB); delay(move_time);
if(digitalRead(ir2)==LOW)
{
}
}
}
servoC.write(CDwonC);delay(200);
if(ir3_flag3 == 1)
{
while(digitalRead(ir3)==HIGH)
{
servoC.write(0);delay(move_time);servoC.write(CDwonC); delay(move_time);
if(digitalRead(ir3)==LOW)
{
}
}
}
servoD.write(CDwonD);delay(200);
if(ir4_flag3 == 1)
{
while(digitalRead(ir4)==HIGH)
{
servoD.write(0);delay(move_time);servoD.write(CDwonD); delay(move_time);
if(digitalRead(ir4)==LOW)
{
}
}
}
servoE.write(CDwonE);delay(200);
if(ir5_flag3 == 1)
{
while(digitalRead(ir5)==HIGH)
{
servoE.write(0);delay(move_time);servoE.write(CDwonE); delay(move_time);
if(digitalRead(ir5)==LOW)
{
}
}
}
Alarm_flag3 = 1;
servoA.write(0);servoB.write(0);servoC.write(0);servoD.write(0);servoE.write(0);servoF.write(0);
}
}
}
void Alarm_chack()
{
if (H == H1 && M == M1)
{
lcd.clear();
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print("Alarm1 Pill Time");
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
if(Alarm_flag1 == 0)
{
servoA.write(ADwonA);delay(200);servoA.write(0);
servoB.write(ADwonB);delay(200);servoB.write(0);
servoC.write(ADwonC);delay(200);servoC.write(0);
servoD.write(ADwonD);delay(200);servoD.write(0);
servoE.write(ADwonE);delay(200);servoE.write(0);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
Alarm_flag1 = 1;
}
}
if (H == H2 && M == M2)
{
lcd.clear();
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print("Alarm2 Pill Time");
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
if(Alarm_flag2 == 0)
{
servoA.write(BDwonA);delay(200);servoA.write(0);
servoB.write(BDwonB);delay(200);servoB.write(0);
servoC.write(BDwonC);delay(200);servoC.write(0);
servoD.write(BDwonD);delay(200);servoD.write(0);
servoE.write(BDwonE);delay(200);servoE.write(0);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
Alarm_flag2 = 1;
}
}
if (H == H3 && M == M3)
{
lcd.clear();
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print("Alarm3 Pill Time");
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
if(Alarm_flag3 == 0)
{
servoA.write(CDwonA);delay(200);servoA.write(0);
servoB.write(CDwonB);delay(200);servoB.write(0);
servoC.write(CDwonC);delay(200);servoC.write(0);
servoD.write(CDwonD);delay(200);servoD.write(0);
servoE.write(CDwonE);delay(200);servoE.write(0);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(buzzer,LOW);
Alarm_flag3 = 1;
}
}
}
void loop()
{
/*Serial.print(digitalRead(ir1));Serial.print(digitalRead(ir2));
Serial.print(digitalRead(ir3));Serial.print(digitalRead(ir4));
Serial.print(digitalRead(ir5));Serial.println("");*/
lcd.setCursor(0,0); /* Go to 2nd line*/
lcd.print(" Smart Pill BOX ");
UpdateDTcurrent();
showDTcurrent();
Manual_funtion();
delay(100);
Alarm_chack();
//Alarm_chack_withIR();
if (H == H1 && M > M1) {Alarm_flag1 = 0;digitalWrite(buzzer,LOW);}
if (H == H2 && M > M2) {Alarm_flag2 = 0;digitalWrite(buzzer,LOW);}
if (H == H3 && M > M3) {Alarm_flag3 = 0;digitalWrite(buzzer,LOW);}
}