Arduino saidas digitais

Olá tenho uma saida D2 do arduino com tres estados : desligado ,ligado e blink (a cada 500ms(funcao millis)) queria saber como faço para ler essa saida… e definir como desligado>desligado;ligado>ligado e piscando como desligado .isso em outra saida D8

Ola. Eu posso tentar te ajudar…
No seu codigo, voce envia o comando desligado/ligado/piscando para a saida d2, certo ??
Pegue este valor tambem jogue para uma variavel.
Assim, voce pode saber o estado que na saida d2, olhando o valor que está na variavel.
exemplo
desligado = 0
ligado = 1
piscando = 2

ajudou ???

Bom, se entendi o que você quis dizer segue abaixo a explicação, espero que ajude.

Para ler uma saída do Arduino você deve usar o comando: digitalRead(SAIDA9) .
Por exemplo: digitalRead(SAIDA9) == HIGH, no caso se a SAIDA9 estiver em nível alto sua logica fará algo ou não dependendo da logica empregada.

Para escrever ou mandar a saída ligar ou desligar você deve usar:
digitalWrite (Saida9, LOW) (desliga) ou digitalWrite (Saida9, HIGH) (liga);

Claro não esqueça de declarar as saídas e entradas e defini-las, como tais conforme sua necessidade.

Pra fazer isso você pode usar a função pulseIn(pino, valor, tempo_de_espera);
Segue referência: https://www.arduino.cc/reference/pt/language/functions/advanced-io/pulsein/

Ficaria algo do tipo:

static int tempoPulso = 0;
if(digitalRead(D8)) tempoPulso = pulseIn(D8, HIGH, 10);
else tempoPulso = pulseIn(D8, LOW, 10);
if((tempoPulso > 400 and tempoPulso < 600) or !digitalRead(D8))
{
Serial.println("Desligado);
}
else
{
Serial.println(“Ligado”);
}