Arduino — Свет горит дольше, чем ожидалось

#arduino

Вопрос:

Предполагается, что код должен загораться светодиодом в костюме на выводе 13 всякий раз, когда вывод 5 высок, однако я столкнулся с парой проблем.

  1. При измерении напряжения с помощью цифрового измерителя — один вывод на arduino GND, а другой на 1,2,3,4. Они показывают некоторые ненулевые значения. Ранее пусковой штифт был 4, и свет все время горел.
  2. Когда вывод 5 высокий (при подключении 5 В от Arduino к выводу 5), индикатор загорается должным образом, но если вывод 5 остается высоким более 1/2 секунды, свет остается высоким более 0,5 секунды даже после того, как вывод 5 отсоединен от вывода 5 В.
 int buttonState = LOW;
int light = 13;
void setup() {
  // put your setup code here, to run once:

  pinMode(gateopen,INPUT);
  pinMode(light, OUTPUT);

}

void loop() 
{
  // put your main code here, to run repeatedly:
  buttonState = digitalRead(gateopen);
  if (buttonState == HIGH)
  {
    digitalWrite(light, HIGH);
  } 
  else 
  {
    digitalWrite(light, LOW);
  }
  //delayMicroseconds(500);
}
 

Комментарии:

1. входной вывод плавающий. добавьте понижающий резистор

Ответ №1:

  1. Как предлагалось ранее, используйте понижающий резистор. Или измените свой канал на активный низкий и используйте INPUT_PULLUP.
  2. Я полагаю, что вы используете задержку в микросекундах, что означает, что светодиод просто мигает слишком быстро для ваших глаз. Если вы хотите «полсекунды», как вы намекнули в своем запросе, вместо этого вы бы использовали задержку(500).

Ответ №2:

Вы испытываете электрический шум, как и сказал Юрай, просто установите понижающий резистор 220 Ом