Чтение количества операций ввода-вывода в коде
Я хочу написать код Arduino, который будет работать на нескольких разных платах. Код может выполнять операции цифрового чтения/записи, но номер вывода будет установлен пользователем/извне. Я хочу включить проверку, существует ли выбранный пин.
Можно ли считать количество операций ввода-вывода (цифровых и аналоговых) Arduino, на котором в данный момент выполняется код, чтобы проверить, находится ли выбор пользователя в заданном диапазоне? Или можно проверить, существует ли определенный пин?
@izlin, 👍0
2 ответа
Лучший ответ:
Это зависит от ядра, но большинство из них предоставляют макрос NUM_DIGITAL_PINS
, который сообщает вам количество цифровых контактов на плате. Как правило, это соответствует не фактическому номеру, а на единицу больше, чем самый высокий номер (есть платы с пробелами в последовательности номеров контактов).
Таким образом, вы можете использовать:
if (pinNumber < NUM_DIGITAL_PINS) {
digitalWrite(pinNumber, HIGH);
} else {
Serial.println("Invalid pin number");
}
В тандеме с этим у вас также обычно есть NUM_ANALOG_INPUTS
.
Количество доступных контактов GPIO зависит от того, как микросхема подключена к плате Arduino и на каком микроконтроллере она работает. Например, Arduino Uno с чипом ATMega328p имеет 14 контактов цифрового ввода-вывода, тогда как Arduino Mega 2560 с чипом имеет 54 контакта цифрового ввода-вывода.
- Невозможно использовать аналоговые контакты в качестве цифровых входов
- Если цифровые выводы Arduino можно использовать в качестве выводов питания, то зачем нам нужны выводы VCC?
- Последствия динамически изменяющихся конфигураций ввода/вывода цифрового контакта?
- Всегда ли установка значения означает установку pin Arduino?
- Как мы можем использовать два устройства одновременно с Arduino?
- NodeMCU - Vin контакт как выход 5V?
- Использовать все контакты как цифровые входы/выходы
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?