#arduino
Вопрос:
Предполагается, что код должен загораться светодиодом в костюме на выводе 13 всякий раз, когда вывод 5 высок, однако я столкнулся с парой проблем.
- При измерении напряжения с помощью цифрового измерителя — один вывод на arduino GND, а другой на 1,2,3,4. Они показывают некоторые ненулевые значения. Ранее пусковой штифт был 4, и свет все время горел.
- Когда вывод 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:
- Как предлагалось ранее, используйте понижающий резистор. Или измените свой канал на активный низкий и используйте INPUT_PULLUP.
- Я полагаю, что вы используете задержку в микросекундах, что означает, что светодиод просто мигает слишком быстро для ваших глаз. Если вы хотите «полсекунды», как вы намекнули в своем запросе, вместо этого вы бы использовали задержку(500).
Ответ №2:
Вы испытываете электрический шум, как и сказал Юрай, просто установите понижающий резистор 220 Ом