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.
Tags:
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por