Relé "pulsado" manter ligado enquato o pulso estiver presente

/* Preciso que o rele deh um clic (toque) e desliga
tipo botao: pulsa liga, solta, deliga */

/* Os reles ligam e desligam mas, enquanto o rele1 desliga o rele2 fica intermitente
e vice versa */

// Esses reles vao controlar um transmissor RC de direçao esquerda - direita.

// O RC ja funciona via wifi-celular.

SKETCH

#include <Ultrasonic.h> //Carrega a biblioteca ultrasonic.h
#include <Servo.h> //Carrega a biblioteca Servo.h
#define relay1 9 //Define the relay1 signal on pin 9 on the arduino
#define relay2 10 //Define the relay2 signal on pin 10 on the arduino


//Inicializa o sensor ultrasonico
Ultrasonic ultrasonicEsq(2, 3); //Trig_pin, Echo_pin
Ultrasonic ultrasonicDir(4, 5); //Trig_pin, Echo_pin

Servo Servo1;
// meio 0°----(90)----120°
int Angulo = 90;

void setup()
{
Serial.begin(57600); //Inicializa a serial
Servo1.attach(6); //set the Servo1 on pin 6 to output
pinMode (relay1, OUTPUT); //set the relay on pin 9 to output
pinMode (relay2, OUTPUT); //set the relay on pin 10 to output
}

void loop()
{
float cmMsec1;
//Le os dados do sensor, com o tempo de retorno do sinal
long microsec1 = ultrasonicEsq.timing();
//Calcula a distancia em centimetros
cmMsec1 = ultrasonicEsq.convert(microsec1, Ultrasonic::CM);

float cmMsec2;
//Le os dados do sensor, com o tempo de retorno do sinal
long microsec2 = ultrasonicDir.timing();
//Calcula a distancia em centimetros
cmMsec2 = ultrasonicDir.convert(microsec2, Ultrasonic::CM);

if(cmMsec1>2000){
cmMsec1 = cmMsec1/100;
}
if(cmMsec2>2000){
cmMsec2 = cmMsec2/100;
}
//Apresenta os dados, em centimetros, no LCD (nao usado,ainda) e na Serial
Serial.print("Esq: ");
Serial.print(cmMsec1);
Serial.print(" ");
Serial.print("Dir: ");
Serial.print(cmMsec2);
Serial.print(" ");
Serial.print(" Angulo Servo: ");
Serial.println(Angulo);

if(cmMsec1 < cmMsec2){
Angulo--;
Servo1.write(Angulo);
}

if(cmMsec2 < cmMsec1){
Angulo++;
Servo1.write(Angulo);
}

// inicio a parti do 0°....(15)....90........120
if(Angulo < 15){
Angulo = 15;
digitalWrite(relay1, HIGH); //turn on the relay
delay (1500); //wait 'X' seconds
digitalWrite(relay1, LOW); //turn off the relay
}

// entre inicio e extremo 0°....15....90........(120)
if(Angulo > 120){
Angulo = 120;
digitalWrite(relay2, HIGH); //turn on the relay
delay (1500); //wait 'X' seconds
digitalWrite(relay2, LOW); //turn off the relay
}

}

Exibições: 103

Responder esta

Respostas a este tópico

O sketch é do EduAduino (Câmera que segue movimento com arduio) tudo isso que vc vê em seu video (youtube) aqui tb faz.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço