Interrrupciones

tengo una pregunta, estoy elaborando un programa para controlar un sistema de 4 salidas mediante el modulo bluetooth hc 05, es un sistema de seguridad, me encuentro perdido con respecto a que me gustaria conocer algun metodo para que mi programa detecte cuando ya no esta recibiendo datos del modulo a traves del puerto serie y active una secuencia especifica, la idea es hacerlo usando una interrupcion, sin embargo no tengo idea de como realizarlo

#include <SoftwareSerial.h>  // libreria que permite establecer pines digitales

SoftwareSerial ITALIKA(2, 3);  // pin 10 como RX, pin 11 como TX

char DATO = 0;      // variable para almacenar caracter recibido
int claxon = 4;    // rele de claxon conectado a pin digital numero 4
int ig = 5;   // ignicion a pin digital numero 5
int luces = 6;     // luces a pin digital numero 6
int arranque=7;      // cortacorrientes a pin digital numero 7

void setup(){
  Serial.begin(9600);   // comunicacion de monitor serial a 9600 bps
  Serial.println("Listo");  // escribe Listo en el monitor
  ITALIKA.begin(38400);    // comunicacion serie entre Arduino y el modulo a 38400 bps
  pinMode(claxon, OUTPUT); //claxon como salida
  pinMode(ig, OUTPUT);  // igcomo salida
  pinMode(luces, OUTPUT);  // lucescomo salida
  pinMode(arranque, OUTPUT);  // arranque como salida
}

void loop(){
if (ITALIKA.available())
    Serial.write(ITALIKA.read());   // lee Bluetooth y envia a monitor serial de Arduino
   DATO = ITALIKA.read();

if ( DATO == '1' )   // si el caracter recibido es el numero 1
 {

  digitalWrite(claxon, HIGH); // escribe un valor alto a emparejarse bluetooth
  digitalWrite(luces, HIGH); // escribe valor alto al emparejarse via bluetooth
  delay(200);
  digitalWrite(claxon, LOW); // escribe un valor BAJO a emparejarse bluetooth
  digitalWrite(luces, LOW); // escribe valor BAJO al emparejarse via bluetooth
  delay(200);
  digitalWrite(ig, !digitalRead(ig)); 
  delay(1000);
  if(ig == 5){
  digitalWrite(arranque, !digitalRead(arranque));
  delay(2100);
  digitalWrite(arranque, !digitalRead(arranque));
  }
  else{
    digitalWrite(arranque, LOW);
   }


  }
if ( DATO == '2' )  {  // si el caracter recibido es el numero 2
 digitalWrite(claxon, HIGH);
 delay(300);
  digitalWrite(claxon,LOW);
}
if ( DATO == '3' )  {  // si el caracter recibido es el numero 3
 digitalWrite(luces, !digitalRead(luces));
 }}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.