Posso usar digitalRead() em um pino declarado como OUTPUT

Olá.
Gostaria de saber se posso usar digitalRead() em um pino declarado como OUTPUT, deste modo:

#define pin 13
void setup() {
  Serial.begin(9600);
  pinMode(pin, OUTPUT);
}

void loop() {
  digitalWrite(pin, HIGH);
  Serial.println(digitalRead(pin));
  delay(1000);
  digitalWrite(pin, LOW);
  Serial.println(digitalRead(pin));
  delay(1000);
}

Acabei de testar e, se possível, ele retorna o valor correto no qual o pino está localizado. Cumprimentos.

1 Like

Mais não teria algum problema por estar tentando fazer leitura em um pino que está declarado como saída?

Olá, ler digitalmente funciona, ler analogicamente sobre um alfinete analógico dá erros, acabei de verificar os dois.
As coisas funcionam com leituras digital, por isso não se preocupe e use-as.

1 Like

Olá, venho me documentando um pouco mais e já fiz alguns testes.
Se você fizer esse tipo de leitura, ele retorna o estado do registro interno do pino, não o estado real do pino, ou seja, como aquele pino deveria estar. Por exemplo, se aquela saída do código anterior foi definida como HIGH, mas devido a falhas de hardware conectadas a ela, é LOW, essa leitura retornará HIGH, que é como está o bit do registro que controla aquele pino.
Saudações.

1 Like