Всегда ли установка значения означает установку pin Arduino?
Одна вещь, которая всегда сбивала меня с толку, - это почему мы используем int или другие команды, чтобы установить переменные с номерами pin, как если бы эти команды всегда были ограничены только номерами контактов. Например
int ledPin = 13;
Является ли случайная цифра вместо 13, которая не является номером пин, причиной ошибки? Сейчас я еще не проверял.
Я только начал понимать, что если вы хотите использовать переменные по отношению к контактам или кнопкам, вы должны сначала установить значения, а затем выполнить связанные функции, такие как digitalRead. Такие команды, как int, не похожи на другие языки программирования, где вы можете устанавливать любые значения и выполнять математические вычисления. Я знаю, что это может показаться очевидным тому, кто привык к Arduino, но эта перспектива помогла мне лучше понять ситуацию. До этого я совершенно не мог понять, как работают вещи из-за путаницы с тем, как работают int или другие подобные переменные.
@AndroidV11, 👍0
Обсуждение1 ответ
Обратите внимание, что это всего лишь целочисленное объявление C/C++, присваивающее значение переменной, как и любой другой переменной (не имеет значения, если речь идет о pin).
Вам не нужно использовать переменную, есть похожие вариации:
Переменная
int pinNumber = 13;
в начале
:
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, HIGH);
Const
Предпочтительно я хотел бы использовать const:
const int PIN_NUMBER = 13;
Или даже лучше, так как это всегда низкое значение:
const uint8_t PIN_NUMBER = 13;
И используйте его с большой буквы.
pinMode(PIN_NUMBER, OUTPUT);
digitalWrite(PIN_NUMBER, HIGH);
#определить
#define PIN_NUMBER 13
pinMode(PIN_NUMBER, OUTPUT);
digitalWrite(PIN_NUMBER, HIGH);
Причина, по которой используются переменные, заключается в том, что когда вы хотите использовать другой pin, вам нужно только изменить его в одном месте, сделав скетч более ремонтопригодным/адаптируемым.
Я не знаю, что происходит, когда вы даете незаконный номер (вы можете попробовать это сами).
- Реализовать связь Visible Light с помощью Arduino
- 4-битный счетчик вверх и вниз
- Скетч мигания ESP8266 не мигает светодиодом
- Акцептант векселей ИКТ
- Использование CD4053 для arduino
- Как подключить светодиодную RGB-матрицу 8x8 к Uno?
- Проводная связь Arduino с MCP23008 GPIO pin expander для включения светодиода нажатием кнопки
- Как запустить 4 светодиода последовательно на основе кнопочного входа?
Какой у вас вопрос? Вы понимаете, что делает оператор
int ledPin = 13;
в C++? Это на самом деле делает две вещи:1) Он объявляет переменнуюледПин
как переменную типа "целое число" и 2) Он присваивает этой переменной значение 13. Он также может быть записан в виде двух отдельных командint ledPin;
иledPin = 13;
. Это не имеет ничего общего с номерами портов *до тех пор, пока* вы не используете переменную для ссылки на порт ввода-вывода, например, с помощьюdigitalRead();
илиdigitalWrite();
., @StarCatкакие еще языки вы знаете?, @Juraj
"int
- это не “команда”, это тип данных. Вся строка представляет собой объявление переменной:
int ledPin = 13;` означает “пусть ledPin-целое число, изначально имеющее значение 13”., @Edgar BonetСпасибо за комментарии. Я просто новичок в изучении Arduino, и в настоящее время мне трудно понять, так как профессор, объясняющий, не делает этого подробно. Вот почему я не понял, что int не имеет абсолютно никакого отношения к номерам портов. Хотя это не тема, я хотел бы попросить ссылки, которые помогли бы мне понять правильную терминологию и понятия, так как поиск в Google, как правило, не помог моему конкретному пониманию., @AndroidV11