Использовать цифровые выводы как аналоговые — Arduino Micro
У меня есть Arduino Micro, и я хочу использовать выводы 6 и 8 как аналоговые. Согласно руководству, это возможно:
В Micro имеется всего 12 аналоговых входов, контакты от A0 до A5 маркированы непосредственно на штифтах и других, к которым вы можете получить доступ в коде, использующем константы от A6 до A11, используются совместно соответственно на цифровых контактах 4, 6, 8, 9, 10 и 12.
Что именно подразумевается под константами? Я знаю, что такое константа в программировании, но не уверен, что использовать для назначения выводов 6 и 8 аналоговыми? Полагаю, я не могу просто выполнить analogRead(6)?
@Alex, 👍0
1 ответ
Лучший ответ:
Константы — это переменные, которые не могут изменяться. Они постоянны.
В данном случае это переменные, заданные в файлах определения платы (в 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) и выполняет аналоговое чтение с него.
- Arduino Micro + Max4466 — Шум на A0
- Выход AnalogRead() колеблется, даже если контакт заземлен
- Как прочитать значение АЦП без общего заземления? (Возможно или нет!)
- Arduino Micro помехи между аналоговыми входами
- Как добавить гистерезис к пороговым значениям?
- Arduino Micro против Pro Micro
- Отправка значения с одного Arduino на другой
- Использование аналогового входа для чтения кнопки
Итак, наоборот (и насколько я понимаю), чтобы использовать эти выводы как цифровые (на что они тоже способны), я могу выполнить digitalRead(8)? Кроме того, требуется ли 'A'? Я читал, что A автоматически назначается, если это analogRead., @Alex
При ссылке на пин-код в цифровом контексте можно использовать любую из меток., @Ignacio Vazquez-Abrams
Если A8 равно 8, то они взаимозаменяемы. Если нет, то нет., @Majenko
Наверное, мне просто показалось странным, что один и тот же контакт может использоваться и как аналоговый, и как цифровой!, @Alex
Я только что посмотрел файл — нельзя использовать
8, нужно использоватьA8или26., @MajenkoПолезно знать. Надо будет глянуть файл pins_arduino на будущее!, @Alex
Что означают номера контактов, за которыми следует ; ?, @scv
Да, за ними следуют ;, @Majenko