Доброго дня. Есть ардуинка, связанная с цифровой клавиатурой. При вводе номера ардуинка должна проверять, если ли номер в памяти, и если есть, сообщить об этом. Номеров до 100 штук разной длинны, от 1 до 11 цифр. Номера только из цифр. Никаких +7 не будет.
И номера эти, необходимо в случае чего относительно просто менять в коде и заливать новую прошивку.
Как подумал Я: сделал отдельный файл “phone numbers.h” и подключил его в начале кода, чтобы если менять номера, то не лезть в основной код.
Внутри файла все номера записать по виду:
так вот, можно ли проверить все эти номера в цикле for?
по типу
for (int i = 1, i <= 100, i++) {
#ifdef(PHONE_NUMBER_ + i) Serial.println("Такой номер есть");
#ifndef(PHONE_NUMBER_ + i)) Serial.println("Такого номера нет");
}
Или, если так сделать нельзя, то как можно элегантнее сохранить в память до 100 значений? Массив собирать?
Ардуино Мега. В теории должно хватить. Ну и опять же, насколько Я понимаю, дефайн память не занимает, как таковую Он же при компиляции просто заменяет одни строки на другие
Если массив создавать, то в каком формате? Просто если каждый элемент массива это номер, то 11-значный стандартный номер телефона не влезет в одну ячейку.
А если 1 номер распихивать по разным ячейкам, то как сделать элегантный документ со списком номеров, чтобы в будущем его легко было редактировать?
Так попробуй. Код ниже я не компилировал, это тебе для примера
static char *phone_numbers[] = {
"86667771122",
"1684",
"1",
"999",
NULL,
};
// проверить, есть ли номер /num/ в списке
//
static bool has_number(const char *num) {
int i = 0;
if (num && *num)
while (phone_numbers[i])
if (!strcmp(phone_numbers[i++]),num)
return true;
return false;
}
В AVR есть модификатор PROGMEM чтобы константная переменная располагалась в памяти программы не отнимая ОЗУ (при этом снижается скорость доступа к ней, но это не должно быть критично). Сам я правда его еще ни разу не использовал, но уже читал что есть такое.
В целом получилось. Правда Я так нифига и не понял, как это работает. Но тот, кто в школе физику прогуливал, для того весь мир окружен магией. Так же у меня с программированием.
Надо сейчас основной проект до ума.
Спасибо