Использование аналоговых контактов для питания

Я бы хотел запитать что-то, требующее 5 В постоянного тока, используя аналоговые контакты Arduino Uno. В частности, я следую разделу "Fun Plug-in Hack для Arduino UNO" этого руководства Adafruit. В нем говорится:

"Если вы установите аналоговый вывод A3 на ВЫХОД и ВЫСОКИЙ, а A2 на выход и НИЗКИЙ, вы можете запитать RTC непосредственно от выводов!"

Похоже, это не работает, поэтому я пробую это с помощью мультиметра, подключенного к A2 и A3:

void setup() {
  pinMode(A2, OUTPUT);
  pinMode(A3, OUTPUT);
  analogWrite(A2, LOW);
  analogWrite(A3, HIGH);
}

void loop() {}

Я измеряю только ~ 0,8 В, пробуя 2 платы, включая совершенно новую, распакованную. Это одно и то же независимо от того, питается ли плата через USB или от 9-вольтовой батареи в разъеме barrel.

Но я могу измерить ~ 5 В от этих выводов, если я установлю вывод "заземления" как INPUT_PULLUP (используя встроенный подтягивающий резистор) вместо ВЫВОДА:

void setup() {
  pinMode(A2, INPUT_PULLUP);
  pinMode(A3, OUTPUT);
  analogWrite(A3, HIGH);
}

void loop() {}

Я не верю, что Adafruit ошибается, поскольку концептуально имеет больше смысла установить оба вывода на ВЫВОД, один из которых будет ВЫСОКИМ, а другой - НИЗКИМ. Так что же я делаю не так?

, 👍-1

Обсуждение

Что вы пытались сделать силой?, @Majenko

@Majenko DS1307 RTC, @armani


1 ответ


2

Аналоговые контакты являются не только аналоговыми входами, но и цифровыми выходами (и входами тоже). Вы используете digitalWrite() для управления ВЫСОКИМ или НИЗКИМ состоянием выхода.

ànalogWrite() предназначен для использования с выводами PWM (я ненавижу имя, выбранное для этой функции, оно настолько неправильное на стольких уровнях).

Кроме того, этот трюк с питанием работает только для устройств, которым требуются очень малые токи (<около 20 мА), поскольку это максимум, который может обеспечить вывод ввода-вывода.


Кстати, вы можете использовать analogWrite() на выводе, отличном от PWM, но он либо полностью включен (аналоговое значение> = 127), либо полностью выключен (аналоговое значение < 127). Макросы HIGH и LOW равны 1 и 0 соответственно, так что это означает "полностью выключено" и "полностью выключено" на обычном выводе без ШИМ.

,