//DISPLAY
//#include <SPI.h>
//#include <Wire.h>
//#include <Adafruit_GFX.h>
#include <ezButton.h>
#include <EEPROM.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// SYStem
const int RELAY_PIN = 14; // the Arduino pin, which connects to the IN pin of relay
const int BUZZER_PIN = 13; // the Arduino pin, which connects to the IN pin of relay
const int ledPin = 12; // the number of the LED pin
//eZ Button
const int SHORT_PRESS_TIME = 200; // 1000 milliseconds
const int LONG_PRESS_TIME = 1000; // 1000 milliseconds
unsigned long pressedTime = 0;
unsigned long releasedTime = 0;
bool isPressing = false;
bool isLongDetected = false;
ezButton btnOk(33);
ezButton btnUp(32);
ezButton btnDown(35);
ezButton btnExit(34);
double cardCutTime = 8.00;
int SealPow = 1750;
int SealPowStore = 1750;
int ArcGenNavi = 0;
// Navigation
int navi_home = 0;
int NAVIGATE_MENU_STAT = 1;
void setup() {
//Serial.begin(9600);
Serial.println("Booting...");
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println(F("Booting...")); display.display();
//connectToWiFi();
//setUpOverTheAirProgramming();
pinMode(ledPin, OUTPUT); // initialize the LED pin as an output:
pinMode(RELAY_PIN, OUTPUT); // initialize the Relay pin as an output:
//pinMode(BUZZER_PIN,OUTPUT);
digitalWrite(RELAY_PIN, HIGH);
btnOk.setDebounceTime(50); // set debounce time to 50 milliseconds
btnUp.setDebounceTime(50); // set debounce time to 50 milliseconds
btnDown.setDebounceTime(50); // set debounce time to 50 milliseconds
btnExit.setDebounceTime(50); // set debounce time to 50 milliseconds
display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 16); display.println(F("Welcome..."));
display.setCursor(0, 30); display.setTextSize(2); display.println(F("Infinity"));
display.display();
//EEPROM Read
SealPowStore = read2BytesIntFromEEPROM(12); //Read EPPROM tank cap last saved
delay(1000);
display.clearDisplay();
}
void loop() {
if (NAVIGATE_MENU_STAT = 1) {
NAVIGATE_MENU();
//SEALER();
//ARCGEN();
}
}
//FUNCTIONS -----------------------------------------------
//----------------------------------------------------------
//----------------------------------------------------------
//----------------------------------------------------------
void NAVIGATE_MENU() {
display.clearDisplay();
//drawRoundRect(X, Y, W, H, R, Color);display.fillRect(0, 0, 128,16, 1);
btnOk.loop();
btnUp.loop();
btnDown.loop();
btnExit.loop();
display.setCursor(0, 0); display.setTextSize(2); display.setTextColor(WHITE); display.println(F("HOME"));
display.drawLine(0, 15, 128, 15, 1);
if (navi_home == 0) {
display.fillRoundRect(0, 18, 120, 13, 4, WHITE);//Item 1
display.setCursor(20, 21); display.setTextSize(1); display.setTextColor(BLACK); display.println(F("SEALER"));
display.drawRoundRect(0, 32, 120, 13, 4, SSD1306_WHITE);//Item 2
display.setCursor(20, 35); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("CARD CUT"));
display.drawRoundRect(0, 46, 120, 13, 4, SSD1306_WHITE);//Item 3
display.setCursor(20, 49); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("ARC GENERATOR"));
}
if (navi_home == 1) {
display.drawRoundRect(0, 18, 120, 13, 4, WHITE);//Item 1
display.setCursor(20, 21); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("SEALER"));
display.fillRoundRect(0, 32, 120, 13, 4, SSD1306_WHITE);//Item 2
display.setCursor(20, 35); display.setTextSize(1); display.setTextColor(BLACK); display.println(F("CARD CUT"));
display.drawRoundRect(0, 46, 120, 13, 4, SSD1306_WHITE);//Item 3
display.setCursor(20, 49); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("ARC GENERATOR"));
}
if (navi_home == 2) {
display.drawRoundRect(0, 18, 120, 13, 4, WHITE);//Item 1
display.setCursor(20, 21); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("SEALER"));
display.drawRoundRect(0, 32, 120, 13, 4, SSD1306_WHITE);//Item 2
display.setCursor(20, 35); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("CARD CUT"));
display.fillRoundRect(0, 46, 120, 13, 4, SSD1306_WHITE);//Item 3
display.setCursor(20, 49); display.setTextSize(1); display.setTextColor(BLACK); display.println(F("ARC GENERATOR"));
}
if (btnDown.isPressed() ) {
tone(BUZZER_PIN, 1500, 100);
if (navi_home < 2) {
navi_home++;
}
}
if (btnUp.isPressed()) {
tone(BUZZER_PIN, 1500, 100);
if (navi_home > 0) {
navi_home--;
}
}
if (btnOk.isPressed()) {
tone(BUZZER_PIN, 2000, 200);
if (navi_home == 0) {
NAVIGATE_MENU_STAT = 0; delay(300); SEALER();
}
if (navi_home == 1) {
NAVIGATE_MENU_STAT = 0; delay(300); CARDCUT();
}
if (navi_home == 2) {
NAVIGATE_MENU_STAT = 0; delay(300); ARCGEN();
}
}
display.display();
}
void CARDCUT() {
/*
// read the state of the pushbutton value:
BBB:
buttonState = digitalRead(buttonPin); buttonStateUP = digitalRead(buttonPinUP); buttonStateDOWN = digitalRead(buttonPinDOWN); buttonStateEXIT = digitalRead(buttonPinEXIT);
display.clearDisplay(); display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0); display.setTextSize(2); display.println(F("Cutter"));
display.setCursor(0, 40); display.setTextSize(1); display.println(F("Press Blue"));
display.setCursor(0, 50); display.setTextSize(1); display.println(F("Button"));
display.drawRoundRect(64, 17, 64, 47, 6, SSD1306_WHITE);
display.setCursor(83, 22); display.setTextSize(1); display.println(F("TIME"));
display.setCursor(72, 37); display.setTextSize(2); display.println(cardCutTime);
display.display();
if (buttonStateUP == HIGH && cardCutTime < 20) {
cardCutTime = cardCutTime + 0.25; delay(50);
}
if (buttonStateDOWN == HIGH && cardCutTime > 1.00) {
cardCutTime = cardCutTime - 0.25; delay(50);
}
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
//digitalWrite(ledPin, HIGH);
digitalWrite(RELAY_PIN, LOW);
int CutDelay = cardCutTime * 1000 / 10;
display.clearDisplay(); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.println(F("Ready!")); display.display();
display.drawRoundRect(0, 17, 127, 47, 0, SSD1306_WHITE); //Progress Bar
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("10%"); display.display();
display.drawRoundRect(2, 19, 1, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("20%"); display.display();
display.drawRoundRect(2, 19, 13, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("30%"); display.display();
display.drawRoundRect(2, 19, 26, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("40%"); display.display();
display.drawRoundRect(2, 19, 39, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("50%"); display.display();
display.drawRoundRect(2, 19, 52, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("60%"); display.display();
display.drawRoundRect(2, 19, 65, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("70%"); display.display();
display.drawRoundRect(2, 19, 78, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("80%"); display.display();
display.drawRoundRect(2, 19, 91, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Cutting"); display.setCursor(90, 0); display.print("90%"); display.display();
display.drawRoundRect(2, 19, 104, 43, 0, SSD1306_WHITE);
display.display();
delay(CutDelay); tone(BUZZER_PIN, 2500, 25);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
display.fillRoundRect(0, 0, 127, 16, 0, SSD1306_BLACK); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.print("Done"); display.setCursor(80, 0); display.print("100%"); display.display();
display.drawRoundRect(2, 19, 123, 43, 0, SSD1306_WHITE);
display.display(); tone(BUZZER_PIN, 2500, 25);
delay(CutDelay);
buttonStateEXIT = digitalRead(buttonPinEXIT); if (buttonStateEXIT == HIGH) {
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500); delay(3000); goto BBB;
}
digitalWrite(RELAY_PIN, HIGH); tone(BUZZER_PIN, 3500, 500);
display.clearDisplay(); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.setTextSize(2); display.println(F("Ready!")); display.display();
}
else {
// turn LED off:
//digitalWrite(ledPin, LOW);
}
digitalRead(buttonPinEXIT);
if (buttonStateEXIT == HIGH) {
btnhold = btnhold + 1;
if (btnhold >= 200) {
NAVIGATE_MENU_STAT = 1; tone(BUZZER_PIN, 500, 100); btnhold = 0;
loop();
}
} else {
CARDCUT();
}
*/
}
void SEALER() {
/*
//read the state of the pushbutton value:
display.clearDisplay();
buttonState = digitalRead(buttonPin); buttonStateUP = digitalRead(buttonPinUP); buttonStateDOWN = digitalRead(buttonPinDOWN); buttonStateEXIT = digitalRead(buttonPinEXIT);
display.setCursor(0, 0); display.setTextSize(2); display.setTextColor(WHITE); display.println(F("S >"));
display.setCursor(45, 3); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("Sealer"));
display.drawLine(0, 15, 128, 15, 1);
display.setCursor(3, 20); display.setTextSize(1); display.setTextColor(WHITE); display.println("Sealer Power");
display.fillRoundRect(3, 30, 60, 22, 3, SSD1306_WHITE);
display.setCursor(7, 34); display.setTextSize(2); display.setTextColor(BLACK); display.println(SealPow);
display.setCursor(67, 37); display.setTextSize(1); display.setTextColor(WHITE); display.println("Mili Sec");
//Bottom Bar
display.drawRoundRect(0, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(33, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(65, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(98, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(4, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Seal");
display.setCursor(46, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("+");
display.setCursor(78, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("-");
display.setCursor(102, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Exit");
display.display();
if (buttonStateUP == HIGH && SealPow < 5000) {
SealPow = SealPow + 100; tone(BUZZER_PIN, 800, 20);
display.fillRoundRect(33, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(46, 57); display.setTextSize(1); display.setTextColor(BLACK); display.println("+");
delay(50);
}
if (buttonStateDOWN == HIGH && SealPow > 100) {
SealPow = SealPow - 100; tone(BUZZER_PIN, 800, 20);
display.fillRoundRect(65, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(78, 57); display.setTextSize(1); display.setTextColor(BLACK); display.println("-");
delay(50);
}
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
display.drawRoundRect(98, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(102, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Stop");
//Sealer Activation
display.fillRect(0, 17, 128, 48, 0); //Clear Display Area
display.setCursor(0, 20); display.setTextSize(1); display.println(F("Heating Up..")); display.display();
display.drawRoundRect(98, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(102, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Exit");
digitalWrite(RELAY_PIN, LOW);
int SealPro = SealPow / 10;
for (int i = 0; i <= 100; i = i + 10) {
buttonStateEXIT = digitalRead(buttonPinEXIT);
if (buttonStateEXIT == HIGH) {
tone(BUZZER_PIN, 2000, 200); break;
} else {
tone(BUZZER_PIN, 2500, 10);
display.fillRect(15, 31, 60, 15, 0); //Clear Display Area
display.drawRoundRect(12, 31, 104, 12, 3, SSD1306_WHITE);
display.fillRoundRect(14, 33, i, 8, 2, SSD1306_WHITE);
//display.setCursor(15, 31); display.setTextSize(2); display.setTextColor(WHITE); display.print(i); display.print(" %");
display.display();
delay(SealPow / 10);
}
}
digitalWrite(RELAY_PIN, HIGH);
//Lid Open Indication
display.fillRect(0, 17, 128, 48, 0); //Clear Display Area
display.setCursor(0, 20); display.setTextSize(2); display.println(F("Cooling"));
display.setCursor(0, 40); display.setTextSize(2); display.println(F("Down")); display.display();
delay(SealPow);
digitalWrite(RELAY_PIN, LOW); tone(BUZZER_PIN, 3500, 200);
delay(100);
digitalWrite(RELAY_PIN, HIGH);
display.fillRect(0, 17, 128, 48, 0); //Clear Display Area
display.setCursor(0, 20); display.setTextSize(2); display.println(F("Done!")); display.display();
delay(2000);
//Save Seal Power > EEPROM
SealPowStore = SealPow;
write2BytesIntoEEPROM(12, SealPowStore);
delay(500);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
buttonStateEXIT = digitalRead(buttonPinEXIT);
if (buttonStateEXIT == HIGH) {
NAVIGATE_MENU_STAT = 1; tone(BUZZER_PIN, 2000, 200);
loop();
} else {
SEALER();
}
*/
}
void ARCGEN() {
/*
buttonState = digitalRead(buttonPin); buttonStateUP = digitalRead(buttonPinUP); buttonStateDOWN = digitalRead(buttonPinDOWN); buttonStateEXIT = digitalRead(buttonPinEXIT);
display.clearDisplay();
display.setCursor(0, 0); display.setTextSize(2); display.setTextColor(WHITE); display.println(F("A>"));
display.setCursor(30, 3); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("ARC GEN"));
display.drawLine(0, 15, 128, 15, 1);
//Bottom Bar
display.drawRoundRect(0, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(33, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(65, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(98, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(4, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Sele");
display.setCursor(46, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("<");
display.setCursor(78, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println(">");
display.setCursor(102, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Exit");
if (ArcGenNavi <= 1) {
if (buttonStateUP == HIGH) {
ArcGenNavi = 0;
display.fillRoundRect(33, 55, 30, 10, 2, SSD1306_WHITE); tone(BUZZER_PIN, 800, 20);
display.setCursor(46, 57); display.setTextSize(1); display.setTextColor(BLACK); display.println("<");
delay(50);
}
if (buttonStateDOWN == HIGH) {
ArcGenNavi = 1;
display.fillRoundRect(65, 55, 30, 10, 2, SSD1306_WHITE); tone(BUZZER_PIN, 800, 20);
display.setCursor(78, 57); display.setTextSize(1); display.setTextColor(BLACK); display.println(">");
delay(50);
}
}
if (ArcGenNavi == 0) {
display.fillRoundRect(2, 17, 60, 37, 5, SSD1306_WHITE);
display.drawRoundRect(65, 17, 60, 37, 5, SSD1306_WHITE);
display.setCursor(9, 28); display.setTextSize(2); display.setTextColor(BLACK); display.println("AUTO");
display.setCursor(77, 27); display.setTextSize(1); display.setTextColor(WHITE); display.println("MANUAL");
display.setCursor(83, 37); display.setTextSize(1); display.setTextColor(WHITE); display.println("MODE");
}
if (ArcGenNavi == 1) {
display.drawRoundRect(2, 17, 60, 37, 5, SSD1306_WHITE);
display.fillRoundRect(65, 17, 60, 37, 5, SSD1306_WHITE);
display.setCursor(9, 28); display.setTextSize(2); display.setTextColor(WHITE); display.println("AUTO");
display.setCursor(77, 27); display.setTextSize(1); display.setTextColor(BLACK); display.println("MANUAL");
display.setCursor(83, 37); display.setTextSize(1); display.setTextColor(BLACK); display.println("MODE");
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
tone(BUZZER_PIN, 1000, 20);
ArcGenNavi = 3;
}
}
if (ArcGenNavi == 3) {
display.setCursor(30, 3); display.setTextSize(1); display.setTextColor(WHITE); display.println(F("ARC GEN > Manual"));
//Bottom Bar
display.drawRoundRect(0, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(33, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(65, 55, 30, 10, 2, SSD1306_WHITE);
display.drawRoundRect(98, 55, 30, 10, 2, SSD1306_WHITE);
display.setCursor(4, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Sele");
display.setCursor(46, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("<");
display.setCursor(78, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println(">");
display.setCursor(102, 57); display.setTextSize(1); display.setTextColor(WHITE); display.println("Exit");
display.drawRoundRect(0, 17, 28, 37, 2, SSD1306_WHITE);
display.drawRoundRect(32, 17, 47, 37, 2, SSD1306_WHITE);
display.drawRoundRect(81, 17, 47, 37, 2, SSD1306_WHITE);
if (ArcGenNavi == 3) {
if (buttonStateUP == HIGH) {
display.fillRoundRect(33, 55, 30, 10, 2, SSD1306_WHITE); tone(BUZZER_PIN, 800, 20);
display.setCursor(46, 57); display.setTextSize(1); display.setTextColor(BLACK); display.println("<");
delay(50);
}
if (buttonStateDOWN == HIGH) {
display.fillRoundRect(65, 55, 30, 10, 2, SSD1306_WHITE); tone(BUZZER_PIN, 800, 20);
display.setCursor(78, 57); display.setTextSize(1); display.setTextColor(BLACK); display.println(">");
delay(50);
}
if (buttonStateEXIT == HIGH) {
ArcGenNavi = 1;
tone(BUZZER_PIN, 500, 50);
delay(1000);ARCGEN();
}
}
}
display.display();
btnCurrentState = digitalRead(buttonPinEXIT);
if (btnLastState == LOW && btnCurrentState == HIGH) {
NAVIGATE_MENU_STAT = 1;
tone(BUZZER_PIN, 500, 100);
loop();
}
else if (btnLastState == HIGH && btnCurrentState == LOW) {
ARCGEN();
}
// save the the last state
btnLastState = btnCurrentState;
}
/* digitalRead(buttonPinEXIT);
if (buttonStateEXIT == HIGH) {
btnhold2 = btnhold2 + 1; delay(100);
if (btnhold2 = 1000) {
NAVIGATE_MENU_STAT = 1;
tone(BUZZER_PIN, 500, 100);
loop();
}
else {
btnhold2 = 0;
}
} else {
ARCGEN();
}}
*/
}
void write2BytesIntoEEPROM(int address, int number) {
EEPROM.write(address, (number >> 8) & 0xFF);
EEPROM.write(address + 1, number & 0xFF);
}
int read2BytesIntFromEEPROM(int address) {
return (EEPROM.read(address) << 8) + EEPROM.read(address + 1);
}