#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);
const int plus1 = 2;
const int plus3 = 3;
const int plus5 = 4;
const int minus1 = 10;
const int minus3 = 9;
const int minus5 = 8;
const int leader_button = 7;
const int base_button = 5;
const int reset0 = 6;
const int singledigi = 30;
const int doubledigi = 50;
int life25 = 25;
int life30 = 30;
int life0 = 0;
int delaypress = 200;
int currentlife=0;
int State_plus1 = 0;
int State_plus3 = 0;
int State_plus5 = 0;
int State_minus1 = 0;
int State_minus3 = 0;
int State_minus5 = 0;
int State_reset25 = 0;
int State_reset30 = 0;
int State_reset0 = 0;
int leader_state=0;
int base_state=0;
bool leader_life=true;
bool base_usage=true;
void setup() {
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed")); while (true);}
delay(1000);
oled.clearDisplay();
oled.setTextSize(3);
oled.setTextColor(WHITE);
oled.setCursor(20, 20);
oled.println("LIFE");
oled.setCursor(0, 42);
oled.println("COUNTER");
oled.setTextSize(1);
oled.setCursor(0, 0);
oled.println(" BY ALB");
oled.display();
pinMode(plus1, INPUT);
pinMode(plus3, INPUT);
pinMode(plus5, INPUT);
pinMode(minus1, INPUT);
pinMode(minus3, INPUT);
pinMode(minus5, INPUT);
pinMode(leader_button, INPUT);
pinMode(base_button, INPUT);
pinMode(reset0, INPUT);
}
void display_life(){
delay(delaypress);
oled.clearDisplay();
oled.setTextSize(5);
if (currentlife <= 0) {currentlife=0;};
if (currentlife > 99) {currentlife=0;};
if (currentlife < 10) {oled.setCursor(doubledigi, 30);} else {oled.setCursor(singledigi, 30);};
oled.println(currentlife);
oled.setTextSize(1);
oled.setCursor(0, 0);
oled.println("LEADER: ");
//oled.setCursor(40, 0);
if (leader_life==true) {oled.print("ALIVE");} else {oled.print("DEAD");}
oled.setCursor(97, 0);
oled.println("BASE:");
if (base_usage==true) {oled.setCursor(80, 8);oled.print("NOT USED");}
else {oled.setCursor(97, 8);oled.print("USED");}
oled.display();
}
void loop() {
State_plus1 = digitalRead(plus1);
State_plus3 = digitalRead(plus3);
State_plus5 = digitalRead(plus5);
State_minus1 = digitalRead(minus1);
State_minus3 = digitalRead(minus3);
State_minus5 = digitalRead(minus5);
base_state = digitalRead(base_button);
leader_state = digitalRead(leader_button);
State_reset0 = digitalRead(reset0);
if (base_state == HIGH) {leader_life=!leader_life; display_life();}
if (leader_state == HIGH) {base_usage=!base_usage; display_life();}
if (State_reset0 == HIGH) {currentlife=life0; leader_life=1;base_usage=1; display_life();}
if (State_plus1 == HIGH) {currentlife=currentlife+1; display_life();}
if (State_plus3 == HIGH) {currentlife=currentlife+3; display_life();}
if (State_plus5 == HIGH) {currentlife=currentlife+5; display_life();}
if (State_minus1 == HIGH) {currentlife=currentlife-1; display_life();}
if (State_minus3 == HIGH) {currentlife=currentlife-3; display_life();}
if (State_minus5 == HIGH) {currentlife=currentlife-5; display_life();}
}