мусор на пинах с прерыванием

sas-koval
Offline
Зарегистрирован: 02.12.2018

добрый день.

первый раз на форуме, потому на всякий случай пишу сюда.

Плата - ардуино уно.

Пытался загрузить скетч, в котором используются прерывания. Он не заработал. Расставил ловушки по тексту и после разбирательств понял, что на пинах 2 и 3 я вижу постоянную пульсацию.

Написал простой тестовый скетч, который просто читает состояние пинов вы выводит на экран. Тут видно, что именно два пина, которые поддерживают прерывания - шумят.

Вопрос в том, это брак или я чего-то не понимаю? Может их как-то притягивать нужно к земле?

Если нужно, то подскажите, как правильно.

void setup() {
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
 Serial.begin(115200);
}
void loop() {
  if (digitalRead(2) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.print(" ");
  if (digitalRead(3) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.print(" ");
  if (digitalRead(4) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.print(" ");
  if (digitalRead(5) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.print(" ");
  if (digitalRead(6) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.print(" ");
  if (digitalRead(7) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.print(" ");
  if (digitalRead(8) == HIGH) Serial.print(1); else  Serial.print(0);
Serial.println(" ");
}
0 1 0 0 0 0 0 
1 1 0 0 0 0 0 
1 1 0 0 0 0 0 
1 1 0 0 0 0 0 
0 1 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 1 0 0 0 0 0 
1 1 0 0 0 0 0 
1 1 0 0 0 0 0 
1 1 0 0 0 0 0 
0 1 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 1 0 0 0 0 0 
1 1 0 0 0 0 0 
1 1 0 0 0 0 0 
1 1 0 0 0 0 0 
0 1 0 0 0 0 0 
0 0 0 0 0 0 0 

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

1000 - 10000 пик на вход повесьте....

sadman41
Offline
Зарегистрирован: 19.10.2016

Нужно притягивать. Через использование INPUT_PULLUP вместо INPUT, например. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Так и должно быть.

Выходы микроконтроллера могут иметь одно из трех состояний:

- соединенные с землей,

- соединенные с питанием,

- ни с чем не соединенные.

В последнем случае, очевидно, напряжение на них неопределено и может быть каким угодно, но входные цепи "округляют" его до логического нуля или единицы.

Нужно притягивать к земле или не нужно - зависит от цели использования. Но внутренним резистором (в микроконтроллерах AVR) можно подтянуть только к питанию. К земле - только внешним.