Bom dia Pessoal

  Sou novato aqui no lab garagem e também no arduino, estou precisando acionar uma trava enviando um pulso de 12v, mas este pulso não deve ser continuo, preciso acionar esta trava atraves de algum comando, quando envio o comando o rele dispara esse pulso e aciona a trava. Estou usando  o arduino UNO, uma relay shield com 4 reles, e 2 fontes de 12v, uma pra ligar o arduino e outra pra conectada na trava e no rele, o problema é que esta corrente de 12v esta constantes e não apenas um pulso, gostaria  de saber como fazer para interromper esta corrente e deixar apenas um pulso acionado por um comando no computador.

  Obrigado desde ja.

Exibições: 2732

Anexos

Responder esta

Respostas a este tópico

No seu programa deve ter, supondo que o pino do relé é o 10:

digitalWrite(10,HIGH);

delay(100);

digitalWrite(10,LOW);

Nesse caso será dado um pulso de 100 milissegundos.

Obrigado deu certo.

consigo controlar o intervalo de tempo em que é acionado pelo delay, mas precisava que fosse acionada apenas quando recebesse um comando de software em java, rodando no computador, pela porta USB, sera q tem como?

Grato.

Oi Ruan, eu acho que tenho a resposta pra você.. Com esse código você vai acionar o sinal de energia no relê pela serial do programa arduino, espero que ajude! 

#define sinalRele 7 // Variavel de acionamento do rele pelo pino 7

void setup(){
pinMode(sinalRele, OUTPUT); //Definindo pino como saida de dados
Serial.begin(9600); //Velocidade de tratramento na serial
}

void loop(){
if(Serial.available()>0){ //Existe algum comando na serial?
int c = Serial.read(); //Se existir, guarda esses valores aqui
if(c == '1'){
if(digitalRead(sinalRele)){//Leia o sinal do pino 7
digitalWrite(sinalRele,0);//sinal de energia desligado
Serial.println("Desligado");
}
else{
digitalWrite(sinalRele,1);//sinal de energia ligado
Serial.println("Ligado");
delay(3000); // Sinal de energia permanece por 3 segundos
digitalWrite(sinalRele,0);//sinal de energia desligado
Serial.println("Desligado");
}
}
}
}

PS: Como faz algum tempo que você postou essa duvida, acho que já tem a resposta, mas de qualquer forma o código pode ajudar outras pessoas, então vou postar.

pod ser char tambèm?

Olha eu não testei como char, pra falar a verdade só peguei o código que eu tinha aqui e adaptei de acordo com tua duvida, sem mudar muita coisa, mas se vc fizer os ajustes certinhos vc consegue. Tenta mudar o tipo da variável e as informações de entrada.

Olá Mirella, muito obrigado pela ajuda, mas ja tinha usado um outro código, um pouco mais simples:

int trava;

void setup()
{
pinMode(12, OUTPUT);
}

void loop()
{
trava = Serial.read();
if (trava = 1)
{
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12, LOW);
trava = 0;
}
}

Com este código consegui ligar e desligar o rele pela serial, porém não consigo controlar o delay do rele, independente do delay que colocar no código o tempo que o rele leva pra ligar e desligar continua o mesmo.

olá amigo , faz o seguinte:


if (trava = 1)
{
digitalWrite(12, HIGH);

delay(500);

digitalWrite(12, LOW);

delay(500);

trava = 0;
}

dê um tempo entre o desligado e a alteralçao da variavel para ver se resolve

Olá IIgner, muito obrigado pela ajuda, mas acho que vou demorar um pouco pra testar, acabei de ter um problema com o meu arduino e acho q vou ter que trocar, assim q conseguir ter o comando com esse outro delay e posto aqui.

Olá, amigo

testei o delay depois do desligamento da trava, mas ai acontece o seguinte, sem o delay depois do desligamento, o rele só liga quando mando um comando na serial, porém se coloco o outro delay ele entra num loop infinito de liga e desliga, independente de mandar algum comando na porta serial.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço