Использовать цифровые выводы как аналоговые — Arduino Micro

У меня есть Arduino Micro, и я хочу использовать выводы 6 и 8 как аналоговые. Согласно руководству, это возможно:

В Micro имеется всего 12 аналоговых входов, контакты от A0 до A5 маркированы непосредственно на штифтах и других, к которым вы можете получить доступ в коде, использующем константы от A6 до A11, используются совместно соответственно на цифровых контактах 4, 6, 8, 9, 10 и 12.

Что именно подразумевается под константами? Я знаю, что такое константа в программировании, но не уверен, что использовать для назначения выводов 6 и 8 аналоговыми? Полагаю, я не могу просто выполнить analogRead(6)?

, 👍0


1 ответ


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

2

Константы — это переменные, которые не могут изменяться. Они постоянны.

В данном случае это переменные, заданные в файлах определения платы (в pins_arduino.h, если вам интересно) и названные именно так, как указано — от A6 до A11. Это дополняет существующие переменные от A0 до A5, которые и так обычно присутствуют.

Так что вы просто используете эти имена, и приложение выбирает для вас правильный пин:

int val = analogRead(A8);

Определения пинов:

static const uint8_t A0 = 18;
static const uint8_t A1 = 19;
static const uint8_t A2 = 20;
static const uint8_t A3 = 21;
static const uint8_t A4 = 22;
static const uint8_t A5 = 23;
static const uint8_t A6 = 24;   // D4
static const uint8_t A7 = 25;   // D6
static const uint8_t A8 = 26;   // D8
static const uint8_t A9 = 27;   // D9
static const uint8_t A10 = 28;  // D10
static const uint8_t A11 = 29;  // D12

Таким образом, нет, вы не можете просто использовать число 8, вы должны использовать A8, которое указывает на контакт номер 26. Затем ядро Arduino интерпретирует это число как аналоговый контакт (в отличие от цифрового контакта, который равен 8) и выполняет аналоговое чтение с него.

,

Итак, наоборот (и насколько я понимаю), чтобы использовать эти выводы как цифровые (на что они тоже способны), я могу выполнить digitalRead(8)? Кроме того, требуется ли 'A'? Я читал, что A автоматически назначается, если это analogRead., @Alex

При ссылке на пин-код в цифровом контексте можно использовать любую из меток., @Ignacio Vazquez-Abrams

Если A8 равно 8, то они взаимозаменяемы. Если нет, то нет., @Majenko

Наверное, мне просто показалось странным, что один и тот же контакт может использоваться и как аналоговый, и как цифровой!, @Alex

Я только что посмотрел файл — нельзя использовать 8, нужно использовать A8 или 26., @Majenko

Полезно знать. Надо будет глянуть файл pins_arduino на будущее!, @Alex

Что означают номера контактов, за которыми следует ; ?, @scv

Да, за ними следуют ;, @Majenko