#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
// Buttons
#define scrollButton 7
#define selectButton 6
#define multiButton 5
Adafruit_SSD1306 display(OLED_RESET);
// Variables:
String textToDisplayAtHomePage = "";
short int homePage = 0;
short int userPageNum = 0;
unsigned short int arrayLength = 0;
unsigned short int ageSelect = 0;
short int createUserOptionSelectedIndex = 0;
boolean isMaleOptionState = true;
boolean pulseOptionState = true;
boolean pastAlergieOptionState = false;
boolean physicalExamOptionState = true;
boolean pastSurgeryOptionState = false;
// Arrays
const unsigned short int maxUsers = 2;
unsigned short int id[maxUsers] = {};
unsigned short int age[maxUsers] = {};
boolean pulseRateNormal[maxUsers] ={};
boolean anyPastAlergies[maxUsers] = {};
boolean anyPastSugeries[maxUsers] = {};
boolean physicalExamNormal[maxUsers] ={};
boolean isMale[maxUsers] = {};
boolean displayHomePage = true;
boolean displayPreviousUsers = false;
boolean displayAdvanceInfo = false;
boolean displayCreateUserPanel = false;
void setup() {
pinMode(scrollButton, INPUT);
pinMode(selectButton, INPUT);
pinMode(multiButton, INPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
Serial.begin(9600);
}
void loop() {
if (digitalRead(scrollButton) == HIGH ){
displayHomePage = true;
displayPreviousUsers = false;
displayAdvanceInfo = false;
displayCreateUserPanel = false;
delay(150);
homePage++;
};
if (homePage > 2) homePage = 0;
if (homePage == 0) textToDisplayAtHomePage = "Hello";
else if (homePage == 1) textToDisplayAtHomePage = "Users";
else textToDisplayAtHomePage = "Create";
if (digitalRead(selectButton)==HIGH){
delay(150);
if (homePage == 1){
displayHomePage = false;
displayPreviousUsers = true;
if (displayPreviousUsers){
if (userPageNum > 1)
userPageNum = 0;
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Id:");
display.println(id[userPageNum]);
display.print("Age:");
display.println(age[userPageNum]);
display.print("Gender: ");
if (isMale[userPageNum]) display.println("Male");
else display.println("Female");
display.display();
delay(150);
userPageNum++;
}
}
else{
displayHomePage = false;
for (auto i: id)
if(i > 0) arrayLength ++;
Serial.println(arrayLength);
if (arrayLength < maxUsers)
displayCreateUserPanel = true;
else{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("List is");
display.println("Full!");
display.display();
delay(2000);
displayHomePage = true;
homePage = 0;
}
}
}
if (digitalRead(multiButton)==HIGH) displayAdvanceInfo = true;
if (displayAdvanceInfo && displayPreviousUsers){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Pulse:");
if (pulseRateNormal[userPageNum]) display.println("Normal");
else display.println("Bad");
display.print("Alergies: ");
if (anyPastAlergies[userPageNum]) display.println("yes");
else display.println("No");
display.print("Past Sugeries: ");
if (anyPastSugeries[userPageNum]) display.println("yes");
else display.println("No");
display.print("PhysicalExam: ");
if (physicalExamNormal[userPageNum]) display.println("Normal");
else display.println("Bad");
display.display();
}
if (displayCreateUserPanel){
if (createUserOptionSelectedIndex >= 0 && createUserOptionSelectedIndex < 2){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Create User:");
display.print("Age: ");
display.println(ageSelect);
if (createUserOptionSelectedIndex == 0 && digitalRead(multiButton)){
delay(40);
ageSelect++;
}
display.print("Gender: ");
if(isMaleOptionState) display.println("Male");
else display.println("Female");
if (createUserOptionSelectedIndex == 1 && digitalRead(multiButton)){
delay(80);
isMaleOptionState = !isMaleOptionState;
}
display.display();
}
if(createUserOptionSelectedIndex >= 2 && createUserOptionSelectedIndex < 6){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Pulse: ");
if(pulseOptionState) display.println("Good");
else display.println("Bad");
if (createUserOptionSelectedIndex == 2 && digitalRead(multiButton)){
delay(80);
pulseOptionState = !pulseOptionState;
}
display.print("Alergies: ");
if(pastAlergieOptionState) display.println("Yes");
else display.println("No");
if (createUserOptionSelectedIndex == 3 && digitalRead(multiButton)){
delay(80);
pastAlergieOptionState = !pastAlergieOptionState;
}
display.print("Past Surgeries: ");
if(pastSurgeryOptionState) display.println("Yes");
else display.println("No");
if (createUserOptionSelectedIndex == 4 && digitalRead(multiButton)){
delay(80);
pastSurgeryOptionState = !pastSurgeryOptionState;
}
display.print("PhysicalExam");
if(physicalExamOptionState) display.println("Good");
else display.println("Bad");
if (createUserOptionSelectedIndex == 5 && digitalRead(multiButton)){
delay(80);
physicalExamOptionState = !physicalExamOptionState;
}
display.display();
}
if(digitalRead(selectButton)==HIGH){
delay(150);
createUserOptionSelectedIndex++;
}
if(createUserOptionSelectedIndex >= 6) createUserOptionSelectedIndex = 0;
if(digitalRead(scrollButton)==HIGH){
delay(150);
unsigned short int largestId = 1;
for (int i = 1; i < maxUsers; i++)
if (id[i] > largestId) largestId = id[i];
largestId++;
id[arrayLength] = largestId;
//age:
age[arrayLength] = ageSelect;
//pulse rate
pulseRateNormal[arrayLength] = pulseOptionState;
// past alergies
anyPastAlergies[arrayLength] = pastAlergieOptionState;
// any past surgeries
anyPastSugeries[arrayLength] = pastSurgeryOptionState;
// physicalExamNormal
physicalExamNormal[arrayLength] = physicalExamOptionState;
// isMale
isMale[arrayLength] = isMaleOptionState;
}
}
if(displayHomePage){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(textToDisplayAtHomePage);
display.display();
}
}