#define compertment_one 15
#define compertment_two 16
#define compertment_three 17
#define compertment_four 18
#define ServoBlock 21
#define button 14
int frequency = 0;
char number_compertment[] = {compertment_one,compertment_two,compertment_three,compertment_four};
int morning_intake[4] = {1,1,1,0};
int afternoon_intake[4] = {0,1,1,0};
int evening_intake[4] = {1,0,1,1};
int night_intake[4] = {1,0,0,1};
int morning_dose[] = {2,3,1,0};
int afternoon_dose[] = {3,4,2,1};
int evening_dose[] = {1,2,3,4};
int night_dose[] = {0,2,3,5};
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
for(int i = 0; i < 4; i++){
pinMode(number_compertment[i], OUTPUT);
}
pinMode(ServoBlock, OUTPUT);
pinMode(button, INPUT);
Dispense(2);
}
void loop() {
}
void Dispense(int intake_time){
switch(intake_time){
case 1:
//Morning dispense
for(int compertments = 0; compertments < 4; compertments++){
if(morning_intake[compertments] == 1){
for(int i = 1; i <= morning_dose[compertments]; i++){
digitalWrite(number_compertment[compertments],HIGH);
Serial.println("Morning intake");
Serial.print("Pill dispensed from:");
Serial.println(compertments);
delay(500);
digitalWrite(number_compertment[compertments],LOW);
delay(1000);
int state = digitalRead(button);
delay(500);
if(state == HIGH){
digitalWrite(ServoBlock, HIGH);
delay(1000);
digitalWrite(ServoBlock, LOW);
}
else{
i = i - 1;
}
Serial.print(i);
Serial.print(" Dose dispensed");
Serial.println();
}
Serial.println("Done dispensing!");
delay(1000);
}
}
break;
case 2:
//Morning dispense
for(int compertments = 0; compertments < 4; compertments++){
if(afternoon_intake[compertments] == 1){
for(int i = 1; i <= afternoon_dose[compertments]; i++){
digitalWrite(number_compertment[compertments],HIGH);
Serial.println("Afternoon intake");
Serial.print("Pill dispensed from:");
Serial.println(compertments);
delay(500);
digitalWrite(number_compertment[compertments],LOW);
delay(1000);
int state = digitalRead(button);
delay(500);
if(state == HIGH){
digitalWrite(ServoBlock, HIGH);
delay(1000);
digitalWrite(ServoBlock, LOW);
}
else{
i = i - 1;
}
Serial.println(i);
Serial.println("Dose dispensed");
Serial.println();
}
Serial.print("Done dispensing!");
delay(1000);
}
}
break;
case 3:
//Morning dispense
for(int compertments = 0; compertments < 4; compertments++){
if(evening_intake[compertments] == 1){
for(int i = 1; i <= evening_dose[compertments]; i++){
digitalWrite(number_compertment[compertments],HIGH);
Serial.println("Evening intake");
Serial.print("Pill dispensed from:");
Serial.println(compertments);
delay(500);
digitalWrite(number_compertment[compertments],LOW);
delay(1000);
int state = digitalRead(button);
delay(500);
if(state == HIGH){
digitalWrite(ServoBlock, HIGH);
delay(1000);
digitalWrite(ServoBlock, LOW);
}
else{
i = i - 1;
}
Serial.println(i);
Serial.print("Dose dispensed");
Serial.println();
}
Serial.println("Done dispensing!");
delay(1000);
}
}
break;
case 4:
//Morning dispense
for(int compertments = 0; compertments < 4; compertments++){
if(night_intake[compertments] == 1){
for(int i = 1; i <= night_dose[compertments]; i++){
digitalWrite(number_compertment[compertments],HIGH);
Serial.println("night intake");
Serial.print("Pill dispensed from:");
Serial.println(compertments);
delay(500);
digitalWrite(number_compertment[compertments],LOW);
delay(1000);
int state = digitalRead(button);
delay(500);
if(state == HIGH){
digitalWrite(ServoBlock, HIGH);
delay(1000);
digitalWrite(ServoBlock, LOW);
}
else{
i = i - 1;
}
Serial.println(i);
Serial.print("Dose dispensed");
Serial.println();
}
Serial.println("Done dispensing!");
delay(1000);
}
}
break;
}
}