#define led0 10
#define led1 11
#define led2 12
#define led3 13
bool read_pin = 0;
bool bt = 0;
bool buffer = 0;
bool get_btn(byte pin)
{
pinMode(pin, INPUT);
buffer = 10;
read_pin = digitalRead(pin);
if (read_pin != buffer) {
// Что-то изменилось, здесь возможна зона неопределенности
// Делаем задержку
delay(10);
// А вот теперь спокойно считываем значение, считая, что нестабильность исчезла
read_pin = digitalRead(pin);
}
digitalWrite(pin, read_pin);
return read_pin;
}
void setup() {
pinMode(0, INPUT); digitalWrite(0, LOW);
pinMode(1, INPUT); digitalWrite(1, LOW);
pinMode(2, INPUT); digitalWrite(2, LOW);
pinMode(3, INPUT); digitalWrite(3, LOW);
pinMode(led0, OUTPUT); digitalWrite(led0, LOW);
pinMode(led1, OUTPUT); digitalWrite(led1, LOW);
pinMode(led2, OUTPUT); digitalWrite(led2, LOW);
pinMode(led3, OUTPUT); digitalWrite(led3, LOW);
}
void loop()
{
bt = get_btn(0);
digitalWrite(led0, bt);
bt = get_btn(1);
digitalWrite(led1, bt);
bt = get_btn(2);
digitalWrite(led2, bt);
bt = get_btn(3);
digitalWrite(led3, bt);
}