Тот же светодиод, но разная яркость на том же PIN-коде

Я подключил светодиод к контакту 7 (с небольшим сопротивлением, чтобы не сжечь его) и попробовал код ниже, с выводом pinMode и без него

void setup() {
  pinMode(7, OUTPUT);
  Serial.begin(9600);
}

void loop() {

  digitalWrite(7, HIGH);
  delay(5000);
  digitalWrite(7, LOW);
  delay(200);

  Serial.println("hello world");
}

Почему комментарий к строке pinMode(7, OUTPUT); приводит к затемнению светодиода?

, 👍0

Обсуждение

попробуйте pinMode(7, INPUT); и pinMode(7, INPUT_PULLUP);, @jsotola

не уверен, что я должен понимать @jsotola кажется, что функция Pull Up используется по умолчанию, но что это такое?, @Mah Neh


1 ответ


6

Все контакты по умолчанию настроены как INPUT при запуске. Поэтому, если вы оставите pinMode(7, OUTPUT);, контакт 7 все равно будет настроен как вход. Вход не обеспечивает никакого тока (или только очень-очень низкий ток утечки), поэтому светодиод в это время будет выключен.

Когда вы записываете HIGH на контакт, когда он настроен как INPUT, вы активируете внутренний подтягивающий резистор. Это резистор (обычно около 10 кОм) между выводом и Vcc (ВЫСОКИЙ уровень) внутри самого микроконтроллера. Теперь небольшой ток, определяемый общим сопротивлением (ваш резистор + внутреннее подтягивающее напряжение), может течь через диод, в результате чего его свечение становится очень тусклым.

Настроить вывод как INPUT с активированным внутренним подтягивающим резистором можно с помощью одной команды: pinMode(7, INPUT_PULLUP);, что делает намерение более понятным, но делает то же самое при капот, установив значение INPUT и написав HIGH на контакте.

,