Bom dia a todos.

estou com problemas na construção de um programa para um uno R3, preciso de ajuda.

O programa deveria fazer o seguinte.

 1-  alimentando a entrada 2 com um pulso.

 2- a saída 4 vai para HIGH,

 3-  um delay ,

4-  saída 5 HIGH,

5-   um delay 

6- a saída 5 LOW

7-  delay,

8- a saída 6 HIGH,

9-apos acionar entrada 2 novamente 

10-  saída 6 LOW,

11-  delay,

12-  saída 4 LOW.

13 -fim. 

consigo fazer ate  o item 9 ai o sistema entra em loop

entre a saída 5 e 6.

por favor me ajudem.

 

Exibições: 280

Responder esta

Respostas a este tópico

Boa tarde FG,

anexe um arquivo contendo o código que vc fez e entra em loop,

para que possamos entender melhor seu projeto, e sugerir correções.

RV

Sr. FG,eu disse:

"  anexe um arquivo "

por favor remova o código que colou na área de texto do tópico, e 

anexe com arquivo.

RV

ok obrigado

Bom dia FG,

obrigado pela compreensão.

No momento estou em viagem.

Ao retornar segunda feira, revisarei seu código e sugerirei 

mudanças para que ele atendam sua necessidade.

RV

Olá.

 Não cheguei a testar aqui mas faria a observação:

Conforme o arquivo Arduino.h que acompanha o pacote, são definidos:

#define HIGH 0x1
#define LOW 0x0

E a instrução é usa-los nessa forma original "HIGH" ou "LOW". Não fazer aritmetica com esses valores.

Vide:

https://www.arduino.cc/reference/en/language/functions/digital-io/d...

No caso me refiro as pontos onde vc escreve o valor de uma variável do tipo int:

estadorele2 = !estadorele2;
//Comandos para o rele 2
digitalWrite(porta_rele2, estadorele2);

Se estadorele2=0 e passa a valer !estadorele2 ele recebe o valor -32768. Pq o "!" inverte todos os bits, até o de sinal...

Sei lá como o AVR interpreta isso... Ahh, sequer vc falou que era um AVR.. Se for um ESP32 ou Arduino DUE ferrou de vez, dá: -2,147,483,648

Teria que ser "^=1" por ex que inverte apenas o ultimo bit e olhe lá. O ideal é obedecer a documentação e usar apenas HIGH e LOW pq não é dificil que lá no meio exista um "if (... == HIGH) e vc usa por ex 255 para high quando ele espera 1 ou 65535, sei lá.

Vide:

https://www.arduino.cc/reference/pt/language/variables/data-types/int/

ok vou mudar 

muito obrigado.

Boa noite FG,

testei o seu código e não deu problema aqui não.

Testei com este código:

RV

Loopando.ino

Fábio, qual seu projeto?

Programa%20mag%20desmag%20hibrido.docxBoa  tarde Luiz 

segue programa

boa tarde o problema esta quando eu aciono o o botão pela segunda vez.

a saída 1 sai e a 3 sai ,so que a 2 entra e aciona a 3 novamente .preciso que desligue tudo no segundo pulso.

se puder me ajudar.

Boa tarde FG.

o seu código está assim:

Ao apertar B1:

liga rele1  ----   delay   ----  liga rele2  -----  delay  -----   desliga rele2  -----

delay  -----  liga rele3.

Ao reapertar B1

desliga rele1  ----   delay   ----  liga rele2  -----  delay  -----   desliga rele2  -----

delay  -----  liga rele3. (mantem Ligado).

Ao apertar B2:

liga rele2 

Ao reapertar B2

desliga rele2

Agora escreva a sequencia que vc precisa.

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço