const int inputA = 7;
const int inputB = 5;
const int output = 9;
const byte interruptPin = 3;
int ignState = 0;
int accState = 0;
int outputState = 0;
int interruptState = 0;
int times = 0;
unsigned long int timeWait;
unsigned long int dipTime;
unsigned long int keyoutTime;
unsigned long int currentTime;
unsigned long int timer = 0;
void setup() {
Serial.begin(9600);
pinMode(inputA, INPUT);
pinMode(inputB, INPUT);
pinMode(output, OUTPUT);
pinMode(interruptPin, INPUT);
attachInterrupt(digitalPinToInterrupt(interruptPin), doorAction, HIGH);
delay (2000);
DDRC &= B11110000;
PORTC |= B00001111;
setDelay();
}
void loop() {
Serial.print("DipTime....");
Serial.println(dipTime);
timeWait = dipTime;
Serial.println(timeWait);
ignState = digitalRead(inputA);
accState = digitalRead(inputB);
interruptState = digitalRead(interruptPin);
if (accState == HIGH) {
outputState = LOW;
digitalWrite(output,outputState);
}
if (ignState == HIGH && accState == LOW) {
outputState = HIGH;
times = 1;
keyoutTime = millis();
digitalWrite(output,outputState);
}
if (ignState == LOW && accState == LOW && times == 1) {
if (millis() - keyoutTime < timeWait) {
outputState = HIGH;
digitalWrite(output,outputState);
times = 1;
} else if (millis() - keyoutTime > timeWait) {
outputState = LOW;
times = 0;
digitalWrite(output,outputState);
}
}
}
void doorAction(){
if (ignState == LOW && accState == LOW){
outputState = HIGH;
digitalWrite(output,outputState);
keyoutTime = millis();
times = 1;
}
}
int setDelay(){
long int dipSwsetting = PINC & B00001111;
Serial.print("dipSwsetting...");
Serial.println(dipSwsetting);
dipTime = 5000 + (10000*dipSwsetting);
delay(1000);
Serial.print("diptime");
Serial.println(dipTime);
delay(1000);
return dipTime;
}