#include <Every.h>
//#include <LCD_I2C.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
//LCD_I2C lcd(0x27); // set adress for LCD
#define SSD1306_128_64 // display name
#define OLED_ADDR 0x3C // I2C display adress
// reset pin not used on 4-pin OLED module
Adafruit_SSD1306 display(-1); // -1 = no reset pin
// declaration of variables
bool ButtonState = HIGH;
bool ButtonState_K1 = HIGH;
float ElapsedTime = 0.0;
unsigned long ButtonPressedLastTime = 0;
unsigned long ButtonPressedTime = 0;
// declaration of constants
//static Every t1(200); // every 200 msec
const byte ButtonPin = 2;
void setup() {
// put your setup code here, to run once:
//lcd.begin();
//lcd.backlight();
//lcd.print("ElapsedTime [ms]:");
pinMode(ButtonPin, INPUT_PULLUP); // init digital pin as input (Button)
pinMode(4, OUTPUT);
// initialize and clear display
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); // turn display on and set adress
display.clearDisplay();
display.display();
// display a line of text
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(27,30);
display.print("Starting");
}
void loop() {
// put your main code here, to run repeatedly:
// read button and signalize buttonstate
ButtonState = digitalRead(ButtonPin);
if(ButtonState){
digitalWrite(4,HIGH);
}
else{digitalWrite(4,LOW);}
// edge detection and time measurement
if (ButtonState_K1==LOW && ButtonState ==HIGH){
ButtonPressedTime = millis();
ElapsedTime = ButtonPressedTime - ButtonPressedLastTime;
/*lcd.setCursor(0,1);
lcd.print(ElapsedTime);
lcd.setCursor(8,0);
lcd.print(ButtonPressedTime);
lcd.setCursor(0,0);
lcd.print(ButtonPressedLastTime);
//Serial.println(millis());*/
}
// hold variables
ButtonState_K1 = ButtonState;
ButtonPressedLastTime = ButtonPressedTime;
}