const byte ToppPinneNummer = 19; //0....13. A0=14....A5=19
const byte Knapp_OPP = 14;
const byte Knapp_NED = 19;
const byte Knapp_GRN = 17;
unsigned long StartTid[ToppPinneNummer + 1];
byte PrevButtonState[ToppPinneNummer + 1];
byte CurrentButtonState[ToppPinneNummer + 1];
unsigned long FilterTid = 0;//Filtertid i mS. Felles for alle, eller separat for hver knapp
int counter;//For test
void setup()
{
Serial.begin(9600);
Serial.println("Klar...");
}
void loop()
{
//******** TEST TELLER **************************
FilterTid = 0;
if ( PrellfriKnapp(Knapp_OPP, FilterTid)==true )//Tell OPP
{
counter++;
Serial.print(counter);
Serial.print(" ");
pinMode(2, OUTPUT);//LED
digitalWrite(2, HIGH);
} else digitalWrite(2, LOW);
//
//
FilterTid = 50;
if ( PrellfriKnapp(Knapp_NED, FilterTid) )//Tell NED
{
counter--;
Serial.print(counter);
Serial.print(" ");
pinMode(3, OUTPUT);//LED
digitalWrite(3, HIGH);
} else digitalWrite(3, LOW);
//*************************************************
//
FilterTid = 50;
if ( PrellfriKnapp(Knapp_GRN, FilterTid) )//Tell NED
{
counter--;
Serial.print(counter);
Serial.print(" ");
pinMode(4, OUTPUT);//LED
digitalWrite(4, HIGH);
} else digitalWrite(4, LOW);
//*************************************************
}
//************************************************************************
//************************************************************************
//***************** PrellfriKnapp ****************************************
bool PrellfriKnapp(int Knapp, unsigned long Filter)
{
pinMode(Knapp, INPUT_PULLUP);
byte CurrentPinState = digitalRead(Knapp);
if (CurrentPinState != PrevButtonState[Knapp])//Prell eller knapptrykk
{
StartTid[Knapp] = millis();//Restart filter timeren
}
if ((millis() - StartTid[Knapp]) >= Filter)//Filter timeout?
{
if (CurrentPinState != CurrentButtonState[Knapp])
{
CurrentButtonState[Knapp] = CurrentPinState;
if (CurrentPinState == LOW) return (true);
}
}
PrevButtonState[Knapp] = CurrentPinState;
return (false);
}
//************************************************************************