Есть задача - задать угол потенциометром и выводить этот угол на экран (в примере вывод в порт). После значения должно быть слово "градусов", но, увы, оно подходит не ко всем числовым значениям, так уж работает великий и могучий. В примере я создал два массива с исключениями. По окончанию перебора выводится "стандартное" - "градусов".
Вопрос - является ли мое решение правильным, и можно ли его улучшить? (Что делать, если к примеру значение не от 0 до 90, а до 10000, там таких исключений больше)
void setup() {
Serial.begin(9600);
}
uint16_t val = analogRead(A0);
uint16_t angle = map(val, 0, 700, 0, 90);
Serial.print(constrain(angle, 0, 90));
// <b>область вопроса:</b>
uint8_t myArray1[] = { 1, 21, 31, 41, 51, 61, 71, 81 };
uint8_t myArray2[] = { 2, 3, 4, 12, 13, 14, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84 };
for (int a = 0; a < 8; a++) {
for (int b = 0; b < 28; b++) {
if (angle == myArray1[a]) {
Serial.println(" градус :)");
} else if (constrain(angle, 0, 90) == myArray2[b]) {
Serial.println(" градуса ");
} else if (a == 7 && b == 27) {
Serial.println(" градусов");
}
}
}