const int inFan = 7;
const int inDef = 8;
const int inComp = 9;
const int fan = 10;
const int def = 11;
const int comp = 12;
boolean outFan=0, outDef=0, outComp=0, readfirst = true;
boolean outFanTemp, outDefTemp, outCompTemp;
unsigned long int curTime, preTime = 0, timeAntiNose = 0, debugTime = 0, pTime = 0;
int delayNoise = 0, readElitech = 1;
void setup() {
pinMode(inFan, INPUT);
pinMode(inDef, INPUT);
pinMode(inComp, INPUT);
pinMode(fan, OUTPUT);
pinMode(def, OUTPUT);
pinMode(comp, OUTPUT);
// wdt_enable(WDTO_4S);
Serial.begin(9600);
}
void loop() {
curTime = millis();
//25 check input
if (curTime - preTime > 150 ) {
preTime = curTime;
outFanTemp = !digitalRead(inFan);
outDefTemp = !digitalRead(inDef);
outCompTemp = !digitalRead(inComp);
timeAntiNose = curTime;
if (outFan != outFanTemp) delayNoise = 1;
if (outDef != outDefTemp) delayNoise = 1;
if (outComp != outCompTemp) delayNoise = 1;
//delayNoise = 1;
}
if ( (readElitech == 1) && delayNoise && ((curTime - timeAntiNose) > 50)) {
outFanTemp = !digitalRead(inFan);
outDefTemp = !digitalRead(inDef);
outCompTemp = !digitalRead(inComp);
delayNoise = 0;
// outFan = outFan != outFanTemp?outFanTemp:outFan;
// digitalWrite(fan, outFan);
if (outFan != outFanTemp) {
outFan = outFanTemp;
digitalWrite(fan, outFan);
}
if (outDef != outDefTemp) {
outDef = outDefTemp;
digitalWrite(def, outDef);
}
if (outComp != outCompTemp) {
outComp = outCompTemp;
digitalWrite(comp, outComp);
}
}
debug();
//digitalWrite(inFan, HIGH);
} // end Loop
void debug() {
if (curTime - debugTime > 200) {
// outFan = digitalRead(inFan);
// outDef = digitalRead(inDef);
// outComp = digitalRead(inComp);
debugTime = curTime;
Serial.print("Fan ");
Serial.print(outFan, DEC);
Serial.print(" Def ");
Serial.print(outDef, DEC);
Serial.print(" Comp ");
Serial.print(outComp, DEC);
Serial.print(" Read ");
Serial.println(readElitech, DEC);
// Serial.println("Input " + input);
}
}