//CAMBIARE STATO BUTTON
//CAMBIARE STATO BUTTON
//CAMBIARE STATO BUTTON
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <EEPROM.h>
#define OLED_I2C 0x3C
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int RELAY = 8;
int BUTTON = 4;
int led = 5;
int meno = 9;
int piu = 7;
int save = 6;
int cutoff;
void setup() {
EEPROM.get(80, cutoff);
pinMode(BUTTON, INPUT_PULLUP);
pinMode(RELAY, OUTPUT);
pinMode(piu, INPUT_PULLUP);
pinMode(meno, INPUT_PULLUP);
pinMode(save, INPUT_PULLUP);
pinMode(led, OUTPUT);
digitalWrite(RELAY, LOW);
digitalWrite(led, LOW);
digitalWrite(4, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
display.begin(SSD1306_SWITCHCAPVCC, OLED_I2C);
display.clearDisplay();
display.display();
display.drawLine(0, 0, 127, 0, WHITE);
display.drawLine(0, 63, 127, 63, WHITE);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(27,20);
display.print("QUICK SHIFTER");
display.setCursor(37,35);
display.print("FZL RACING");
display.display();
delay(2500);
}
void loop() {
if(digitalRead(BUTTON) == LOW){
digitalWrite(RELAY, HIGH);
digitalWrite(led, HIGH);
delay(cutoff);
digitalWrite(RELAY, LOW);
digitalWrite(led, LOW);
delay(500);
}else{
digitalWrite(RELAY, LOW);
}
if(digitalRead(piu) == LOW){
delay(200);
cutoff = cutoff +10;
}else{
cutoff = cutoff;
}
if(digitalRead(meno) == LOW){
delay(200);
cutoff = cutoff -10;
}else{
cutoff = cutoff;
}
if(cutoff <100){
display.clearDisplay();
display.drawLine(0, 0, 127, 0, WHITE);
display.drawLine(0, 63, 127, 63, WHITE);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(47,25);
display.print(cutoff);
display.setTextSize(1);
display.setCursor(72,30);
display.print("ms");
display.display();
}else{
display.clearDisplay();
display.drawLine(0, 0, 127, 0, WHITE);
display.drawLine(0, 63, 127, 63, WHITE);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(35,25);
display.print(cutoff);
display.setTextSize(1);
display.setCursor(72,30);
display.print("ms");
display.display();
}
if(cutoff <10){
cutoff = 10;
}
if(cutoff >250){
cutoff = 250;
}
if(digitalRead(save) == LOW){
EEPROM.update(80, cutoff);
digitalWrite(led, HIGH);
display.clearDisplay();
display.drawLine(0, 0, 127, 0, WHITE);
display.drawLine(0, 63, 127, 63, WHITE);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(32,32);
display.print("MENYIMPAN");
display.setCursor(32,20);
display.print("BERHASIL");
display.display();
delay(3000);
digitalWrite(led, LOW);
}
}