class Button
{
private:
byte _pin = 0;
byte _state = 0;
float _time_click = 50.0f;
float _time_long_click = 2000.0f;
public:
Button()
{
};
Button(byte pin)
{
_pin = pin;
pinMode(_pin, INPUT);
digitalWrite(_pin, LOW);
}
void SetData(byte pin)
{
_pin = pin;
pinMode(_pin, INPUT);
digitalWrite(_pin, LOW);
}
bool CheckClick()
{
int dig = digitalRead(_pin);
Serial.println(dig);
if (dig > 0)
{
Serial.print("Button click ");
Serial.println(_pin);
if (_state == 0)
{
_state = 1;
return true;
}
}
return false;
}
};
Button Buttons[4];
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
Buttons[0].SetData(2);
Buttons[1].SetData(3);
Buttons[2].SetData(4);
Buttons[3].SetData(5);
}
void loop()
{
delay(1000);
// put your main code here, to run repeatedly:
for(int id = 0; id < 4; id++)
{
if(Buttons[id].CheckClick())
OnButtonClick(id);
}
}
void OnButtonClick(byte id)
{
Serial.print("ID Button click = ");
Serial.println(id);
}