Итак, у вас есть x1-20 в вашем приложении, и эти значения подключены к произвольным выводам на разъеме ввода / вывода?
Просто определите отображение массива между ними
int x[] = { 3, 14, 22 ........ 47 };
// Then just
digitalRead(x[2]); // Reads pin 14.
PS.Вам больше не нужны #defines, просто используйте x[N]
вместо xN
.