Utilizo un Arduino UNO con un modulo Bluetooth
El circuito que uso es el siguiente:
Debo controlar un motor de 24V, para ello usé 3 relés SPDT, uno para ON/OFF y los otros dos para regular el giro (no encontré ningún relé DPDT que me sirviera). Para gobernar los relés uso un transistor y un LED que me indica si el relé está activo.
Ahora mismo no puedo colgar el circuito, en cuanto pueda lo subo.
El código es el siguiente:
int fca;
int fcc;
int pulsador;
void setup()
{
Serial.begin(9600); //LECTURA BLUETOOTH
pinMode(5, OUTPUT); //ON-OFF
pinMode(7, OUTPUT); //GIRO
pinMode(10, INPUT); //Final de carrera 1
pinMode(11, INPUT); //Final de carrera 2
pinMode(12, INPUT); //Pulsador
}
void loop() {
byte dato;
if(Serial.available()>0)
{
dato=Serial.read();
switch(dato)
{
case 116: { //ABRIR
if(digitalRead(10)==LOW)
{
fca=digitalRead(10); // leemos el valor del final de carrera
pulsador=digitalRead(12);
Serial.println("ABRIENDO\n\n");
while(fca==LOW && pulsador==LOW)
{
digitalWrite(7,HIGH); //GIRO
digitalWrite(5, HIGH); //Abrimos
fca=digitalRead(10); //Y leemos el valor del final de carrera
pulsador=digitalRead(12);
} //Fin while
digitalWrite(5,LOW); //Paramos motor
Serial.println("ABIERTO\n\n");
}
else
Serial.println("YA ESTA ABIERTO\n\n");
break;
} // fin case
pulsador=LOW;
case 122: { //CERRAR
if(digitalRead(11)==LOW)
{
fcc=digitalRead(11);
pulsador=digitalRead(12);
Serial.println("CERRANDO\n\n");
while(fcc==LOW && pulsador==LOW)
{
digitalWrite(7,LOW);
digitalWrite(5,HIGH);
fcc=digitalRead(11);
pulsador=digitalRead(12);
}
digitalWrite(5,LOW); //Paramos motor
Serial.println("CERRADO\n\n");
}
else
Serial.println("YA ESTA CERRADO\n\n");
break;
}
} //fin switch
} //fin if
}
Si se desconecta el arduino y se vuelve a conectar se activan solos los relés, como si se hubiera mandado por bluetooth el código 116. Si se presiona el final de carrera "fca" todo funciona como es debido.