Всегда ли установка значения означает установку pin Arduino?

Одна вещь, которая всегда сбивала меня с толку, - это почему мы используем int или другие команды, чтобы установить переменные с номерами pin, как если бы эти команды всегда были ограничены только номерами контактов. Например

int ledPin = 13;

Является ли случайная цифра вместо 13, которая не является номером пин, причиной ошибки? Сейчас я еще не проверял.

Я только начал понимать, что если вы хотите использовать переменные по отношению к контактам или кнопкам, вы должны сначала установить значения, а затем выполнить связанные функции, такие как digitalRead. Такие команды, как int, не похожи на другие языки программирования, где вы можете устанавливать любые значения и выполнять математические вычисления. Я знаю, что это может показаться очевидным тому, кто привык к Arduino, но эта перспектива помогла мне лучше понять ситуацию. До этого я совершенно не мог понять, как работают вещи из-за путаницы с тем, как работают int или другие подобные переменные.

, 👍0

Обсуждение

Какой у вас вопрос? Вы понимаете, что делает оператор 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


1 ответ


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, вам нужно только изменить его в одном месте, сделав скетч более ремонтопригодным/адаптируемым.

Я не знаю, что происходит, когда вы даете незаконный номер (вы можете попробовать это сами).

,