Dois relés em portas diferentes, alguém pode ajuda?

Pessoal,  preciso de uma força aqui:

Fiz uma programa no UNO, mas nao está dando certo.
O que eu quero é o seguinte:
O relé 1 recebe o pulso 5V ( porta 3 ) (delay 1000 ms) e acende o LED (no caso) vermelho.

Led vermelhor apaga

depois de um delay de 4000 ms.
O rele 2 é recebe o pulso 5V(porta 5) (delay 1000 ms) e acende o LED ( no caso ) verde.
Led verde apaga.

Porém, após o led verde apagar, não haveria loop, somente se eu carrega-se o programa novamente.

Ou seja.. nao gostaria que ficasse repetindo.

e também não a botoeiras ou sensores, apenas o sistema simples ai.
O Led verde somente irá acionar após o led vermelho apagar, tipo um vinculo. Pensando num inversor de polaridade.

Alguém pode me ajudar?

Exibições: 269

Responder esta

Respostas a este tópico

Filipe, coloque o seu código no pastebin.com para que possamos verificar onde está sua dificuldade.

  'Eiju

Manjo bem pouco de programação C.

Veja onde está o erro, ou se esta TUDO errado.. kkkk

#define RELE_1 3
#define RELE_2 5

void parear_dispositivo()
void setup() {
serial.begin(9600);
pinMode(RELE1; output);
pinMode(RELE2; output);
}

void loop() {


digitalWrite (RELE_1, HIGH);
delay (1000); 
}

else {

ditigalWhrite(RELE_1; LOW);
delayMicroseconds(2);

digitalWhite(RELE_2; HIGH);
delay(1000); 
digitalWhite(RELE_2; LOW);
delayMicroseconds(2);

}

Manjo bem pouco de programação C.

Veja onde está o erro, ou se esta TUDO errado.. kkkk

#define RELE_1 3
#define RELE_2 5

void parear_dispositivo()
void setup() {
serial.begin(9600);
pinMode(RELE1; output);
pinMode(RELE2; output);
}

void loop() {


digitalWrite (RELE_1, HIGH);
delay (1000);
}

else {

ditigalWhrite(RELE_1; LOW);
delayMicroseconds(2);

digitalWhite(RELE_2; HIGH);
delay(1000);
digitalWhite(RELE_2; LOW);
delayMicroseconds(2);

}

void setup() {

pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
}

void loop() {
digitalWrite(3, HIGH); 
delay(1000); 
digitalWrite(3, LOW); 
delay(5000);

digitalWrite(5, HIGH); 
delay(1000); 
digitalWrite(5, LOW); 
delay(10000);
void loop ();

Sr. FT, boa noite.

realmente o Sr.manja pouco de programação, pois existem vários erros no código postado pelo Sr.

Acho que o Sr. nem tentou compila-lo.

1.  void parear_dispositivo() --->  função desconhecida pelo código.

2. Voce "nomeou" RELE_1 e RELE_2,  ----> mas usou RELE1 e RELE2

3. definição de saída tem que ser com letra maiúscula   --->  OUTPUT

4. ditigalWhrite(RELE_1; LOW);  ---> digitalWrite (RELE_1, LOW);

5. Vários ponto e virgula, onde deveria ser virgula.

Segue seu código corrigido e funcionando conforme sua necessidade.

Rui

Anexos

R.V.

Muito Obrigado, quase lá.!

O comando while que vc utilizou, não faz funcionar apenas 1 vez... 
se essa for a intenção.

Abraços.

Oi FT,

faz sim somente uma vez, eu testei aqui,

coloquei um Serial.println lá dentro e imprimiu somente 1 vez.

Rui

PERFEITO RUI !.
Muito Grato. !

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço