ajuda programação entrada digital

bom dia a todos, estou com uma duvida na programação que pretendo fazer e gostaria pudessem me ajudar. preciso que uma saida do arduino uno gere apenas um pulso quando identifique uma diferença de estado logico de uma entrada digital. ou seja: o arduino envia apenas um pulso quando uma porta é alimentada e gere outro pulso quando essa porta deixe de receber alimentação.
tentei algo com a condicionante if sem sucesso. pago uma cerveja pra quem ajudar kkkkk.

Mete aqui o que fizeste e alguém te ajudará. O que tu precisas é de detectar um flanco e depois usar o exemplo blink without delay para gerar o pulso.

A detecção de flanco é algo que foi respondido aqui no fórum recentemente… se pesquisares os meus posts deves ver dois exemplos disso.

infelizmete sou iniciante em programação , já que acabei e comprar um kit de arduino, estou pesquisando a detecção de borda que voce diz. tentei algo aqui , mas o led pisca rapidamente ao contrario do que é pedido no sketch.

// Daremos um nome ao pino que ficara o LED:
int led = 13;

void interrupcao(){
digitalWrite(led, HIGH); // Liga o LED (HIGH = nível lógico alto)
delay(1000);
digitalWrite(led, LOW);
}

// Esta função "setup" roda uma vez quando a placa e ligada ou resetada
void setup() {
pinMode(led, OUTPUT); // Configura o pino do led (digital) como saída
attachInterrupt(0,interrupcao,CHANGE); //Configurando a interrupção
}

// Função que se repete infinitamente quando a placa é ligada
void loop() {

}

Caro huntered4, vamos por partes:

1 - toda vez que você postar códigos, seria bom você coloca-los entre as tags [ code ] [/ code ] que é o botão com o símbolo </> na esquerda.

2 - quando você postar o código dentro dessas tags, coloque o código que você fez, código completo.

Irei tentar te ajudar com o programa, no seu primeiro post, você solicitou um pulso que seria um estado HIGH em uma determinada porta por um período de tempo, no código que você mandou quans
do a porta 2 do Arduino UNO, acredito que seja esse, recebe um sinal do tipo HIGH, o led deveria ficar acesso durante 1seg(1000 miliseg), não está acontecendo isso?

Vamos as possível causa. Você colocou um resistor PULLDOWN na porta 2?
Se colocou, manda o esquema para verificar.

boa tarde tec diego.m desculpe pelo inconveniente. realmente necessito um pulso em levantamento de borda e baixada de borda. coloquei um pushbutton pull up na entrada 2 . o codigo a principio funcionou como esperado tendo apenas que aumentasse o delay .

Fico feliz que tenha conseguido! Boa sorte.
Precisando estaremos aqui!

Esse código não funciona... porque assume que o utilizador não vai carregar no botão durante esse segundo de espera.

Mais, qualquer interrupção deve ser o mais breve possível, logo meter um segundo de espera é pedir por sarilhos. Sim, agora faz o que pretendes, mas não faz muito. quando tentares fazer algo mais com o arduino vais ver que esse pedaço vai dar problemas e se não for esse pedaço será o utilizador do teu projecto.

Porque não detectar o flanco sem interrupção? E usar a função millis() em vez de delay?