// Button Bounce counter
//
// Red button has bouncing simulation enabled,
// Blue button has bouncing simulation disabled.
#define BUTTON_PIN 12
#define LED_R 8
#define IR_VCC 7
#define IR_DO 4
unsigned long TIME_START;
unsigned long TIME_END;
unsigned long TIME_VALUE;
unsigned long STATE_START;
unsigned long TIME_START_IR;
unsigned long TIME_END_IR;
float TIME_VALUE_IR;
unsigned long STATE_START_IR;
int EZER;
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(IR_VCC, OUTPUT);
pinMode(IR_DO, INPUT);
TIME_START = millis();
digitalWrite(IR_VCC, HIGH);
digitalWrite(IR_DO, LOW);
}
int lastState = HIGH;
int lastState_IR = LOW;
void loop() {
int value = digitalRead((BUTTON_PIN));
if (lastState != value and millis() >= STATE_START+5) {
lastState = value;
if (value == HIGH) {
STATE_START = millis();
TIME_END = millis();
Serial.print(" released :");
TIME_VALUE = TIME_END-TIME_START;
Serial.println(TIME_VALUE);
digitalWrite(LED_R, LOW);
}
if (value == LOW) {
STATE_START = millis();
TIME_START = millis();
Serial.println(" pressed");
digitalWrite(LED_R, HIGH);
}
}
int value_IR = digitalRead((IR_DO));
if (lastState_IR != value_IR) {
lastState_IR = value_IR;
if (value_IR == HIGH) {
STATE_START_IR = millis();
TIME_END_IR = millis();
Serial.print(" NO LIGHT :");
TIME_VALUE_IR = TIME_END_IR-TIME_START_IR;
Serial.println(TIME_VALUE_IR);
EZER=int (TIME_VALUE_IR/1000);
Serial.print(EZER);
Serial.print(" 1/");
if (EZER > 0) {
Serial.println(int (10000/(TIME_VALUE_IR - EZER * 1000)));
}
else {
Serial.println(int (10000/TIME_VALUE_IR));
}
}
if (value_IR == LOW) {
STATE_START_IR = millis();
TIME_START_IR = millis();
Serial.println(" LIGHT ");
}
}
}