Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#define PIN1 10
#define PIN2 11
#define DOWN 1
#define OK 2
#define UP 3
#define SET 4
void setup()
{
Serial.begin(9600);
}
char checkKeys()
{ // понеслась
pinMode(PIN1, OUTPUT);
digitalWrite(PIN1, LOW);
pinMode(PIN2, OUTPUT);
digitalWrite(PIN2, LOW);
int keysRead = 0;
for (keysRead = 1; keysRead <= 4; keysRead++) {
switch (keysRead) {
case DOWN:
digitalWrite(PIN1, INPUT_PULLUP);
if (digitalRead(PIN1) == false) {
return DOWN;
}
break;
case OK:
pinMode(PIN1, OUTPUT);
digitalWrite(PIN1, LOW);
digitalWrite(PIN2, INPUT_PULLUP);
if (digitalRead(PIN2) == false) {
return OK;
}
break;
case UP:
pinMode(PIN2, OUTPUT);
digitalWrite(PIN2, LOW);
digitalWrite(PIN1, INPUT_PULLUP);
if (digitalRead(PIN1) == false) {
return UP;
}
break;
case SET:
digitalWrite(PIN2, INPUT_PULLUP);
if (digitalRead(PIN2) == false) {
return SET;
}
break;
default:
return 0;
}
}
}
void loop()
{
int keyScan = checkKeys();
Serial.print(keyScan);
Serial.print(" ");
switch (keyScan) {
case DOWN:
Serial.println("DOWN");
break;
case OK:
Serial.println("OK");
break;
case UP:
Serial.println("UP");
break;
case SET:
Serial.println("SET");
break;
}
delay(500);
}

2 порта 4 кнопки