#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "Variables.h"
Adafruit_SSD1306 display1(128, 64, &Wire);//Adafruit_SSD1306 display1(128, 64, &Wire, -1);
Adafruit_SSD1306 display2(128, 64, &Wire, -1);
//-----
#include <EEPROM.h>
volatile uint8_t butstat,butprs;
#include "clock.h"
#include "temp.h"
#include "Boost.h"
#include "Pressure.h"
#include "OilPressure.h"
#include "coolantTemp.h"
#include "oilTemp.h"
#include "FuelPressure.h"
#include "LCD1.h"
#include "LCD2.h"
//---SLPASH SCREEN---
//#include "LOGO.h"
//#include "LOGOCM.h"
#include "splash.h"
volatile long ma,mb;
//volatile uint8_t
void butSc(uint8_t mask,uint8_t btx,uint8_t sub){
if((butstat & mask)==mask){
if(digitalRead(btx)==1){
butstat &= ~(mask);
switch(butprs){
case 2:buttonID=1;TIMSK4=0;break;
case 3: /*buttonID=1*/;TIMSK4=0;break;
case 12:buttonID=2;TIMSK4=0;break;
case 13: /*buttonID=2*/;TIMSK4=0;break;
case 22:buttonID=3;TIMSK4=0;break;
case 23: /*buttonID=4*/;TIMSK4=0;break;
default:break;
}
}
}
else{
if(digitalRead(btx)==0){
butstat|=mask;
TCNT4=64000;
TIFR4=0;
TIMSK4=1;
butprs=(1+sub);
}
}
}
//buttonID:1=short0,2=sh1,3=sh2,4=long0,5=long1,6=long2
ISR(PCINT0_vect){
butSc(1,button0,0);
butSc(2,button1,10);
butSc(4,button2,20);
}
ISR(TIMER4_OVF_vect){ //TCNT4=64000-for 25mS,TCNT4=14700-800mS
switch(butprs){
case 1:if(digitalRead(button0)==0){
TCNT4=14700; butprs=2;
}
else {TIMSK4=0;butprs=0;/*buttonID=0;*/}
break;
case 2:TIMSK4=0;butprs=3;buttonID=1;;break;
case 11:if(digitalRead(button1)==0){
TCNT4=14700; butprs=12;
}
else {TIMSK4=0;butprs=0;/*buttonID=0;*/}
break;
case 12:TIMSK4=0;butprs=13;buttonID=2;break;
case 21:if(digitalRead(button2)==0){
TCNT4=14700; butprs=22;
}
else {TIMSK4=0;butprs=0;/*buttonID=0;*/}
break;
case 22:TIMSK4=0;butprs=23;buttonID=4;break;
default:TIMSK4=0;break;
}
}
void setup() {
pinMode(DimmerPin, INPUT);
display1.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display2.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display1.setTextColor(WHITE);
display2.setTextColor(WHITE);
//startDisplay();
display1.clearDisplay();
pinMode(button0, INPUT_PULLUP);
pinMode(button1, INPUT_PULLUP); //--------- clock
pinMode(button2, INPUT_PULLUP); //---------------clock
para1 = EEPROM.read(1);
para2 = EEPROM.read(2);
PCICR = 0b00000001;
PCMSK0 = 0b01110000;
TCCR4A = 0;
TCCR4B=4;
TCNT4=0;
TIMSK4=0;
sei();
buttonID=0;
display1.setCursor(10, 1);
display1.print(F("But ID: "));
display1.println(buttonID);
display1.display();
butstat=0;
butprs=0;
}
void loop() {
//LCD_1update();
LCD_2update();
///display2.clearDisplay();
//displayClock();
}