#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// 4 Servos
Servo s1, s2, s3, s4;
// 4 Buttons
const int b1 = 25, b2 = 26, b3 = 27, b4 = 33;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("1:Fever"
"2:Injury");
lcd.setCursor(0, 1);
lcd.print("3:pain"
"4:Burn");
// Attach servos
s1.attach(13); s2.attach(12); s3.attach(14); s4.attach(23);
// Reset servos to 0 degrees
s1.write(0); s2.write(0); s3.write(0); s4.write(0);
// Setup buttons with pullup (no resistors needed)
pinMode(b1, INPUT_PULLUP);
pinMode(b2, INPUT_PULLUP);
pinMode(b3, INPUT_PULLUP);
pinMode(b4, INPUT_PULLUP);
}
void dispense(Servo &s, String item) {
lcd.clear();
lcd.print("Dispensing...");
lcd.setCursor(0, 1);
lcd.print(item);
s.write(180); // Open
delay(1500);
s.write(0); // Close
lcd.clear();
lcd.print("please Take Item!");
delay(2000);
// Return to home screen
lcd.clear();
lcd.print("1:Fever"
"2:Injury");
lcd.setCursor(0, 1);
lcd.print("3:pain"
"4:Burn");
}
void loop()
{if (digitalRead(b1) == LOW) dispense(s1, "Paracetamol") ;
if (digitalRead(b2) == LOW) dispense(s2, "Bandages");
if (digitalRead(b3) == LOW) dispense(s3, "painkiller");
if (digitalRead(b4) == LOW) dispense(s4, "Burn Cream");
}