Чтение количества операций ввода-вывода в коде

Я хочу написать код Arduino, который будет работать на нескольких разных платах. Код может выполнять операции цифрового чтения/записи, но номер вывода будет установлен пользователем/извне. Я хочу включить проверку, существует ли выбранный пин.

Можно ли считать количество операций ввода-вывода (цифровых и аналоговых) Arduino, на котором в данный момент выполняется код, чтобы проверить, находится ли выбор пользователя в заданном диапазоне? Или можно проверить, существует ли определенный пин?

, 👍0


2 ответа


Лучший ответ:

2

Это зависит от ядра, но большинство из них предоставляют макрос NUM_DIGITAL_PINS, который сообщает вам количество цифровых контактов на плате. Как правило, это соответствует не фактическому номеру, а на единицу больше, чем самый высокий номер (есть платы с пробелами в последовательности номеров контактов).

Таким образом, вы можете использовать:

if (pinNumber < NUM_DIGITAL_PINS) {
    digitalWrite(pinNumber, HIGH);
} else {
    Serial.println("Invalid pin number");
}

В тандеме с этим у вас также обычно есть NUM_ANALOG_INPUTS.

,

0

Количество доступных контактов GPIO зависит от того, как микросхема подключена к плате Arduino и на каком микроконтроллере она работает. Например, Arduino Uno с чипом ATMega328p имеет 14 контактов цифрового ввода-вывода, тогда как Arduino Mega 2560 с чипом имеет 54 контакта цифрового ввода-вывода.

,