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