Hola buenos dias, quisiera saber si alguien tiene conocimiento sobre app inventor y la comunicación por bt con arduino.
Ya logre establecer la conexión y enviar comandos desde la app al arduino, logrando encender y apagar los leds,pero no logro hacerlo de manera inversa, lo cual necesito para leer los estados actuales de cada salida, adjunto código arduino.
#include <SoftwareSerial.h>
#include <SPI.h> // incluye libreria bus SPI
SoftwareSerial miBT(6,7); //Bluethoot conectado pines 6 y 7
int cocina =3;
int living =2;
int ledCerrojo1 =4;
int ledCerrojo2 =5;
int RELE =8;
char CA;
char CB;
char sale;
String readString;
void setup() {
Serial.begin(9600);
miBT.begin(38400);
SPI.begin();
pinMode(ledCerrojo1,OUTPUT);
pinMode(ledCerrojo2,OUTPUT);
pinMode(living,OUTPUT);
pinMode(cocina,OUTPUT);
pinMode(RELE, OUTPUT);
digitalWrite(RELE,HIGH);
digitalWrite(living,LOW);
digitalWrite(cocina,LOW);
digitalWrite(ledCerrojo1,LOW);
digitalWrite(ledCerrojo2,LOW);
}
//ESTADO LUCES
void luces(int estado1,int estado2){
char sale;
if(estado1 == 0 && estado2 == 0){
sale='a';
}else if(estado1 == 0 && estado2 == 1){
sale='b';
}else if(estado1 == 1 && estado2 == 0){
sale='c';
}else if(estado1 == 1 && estado2 == 1){
sale='d';
}
miBT.write(sale);
}
//ESTADO SENSORES
void sensores(char sale,char CA,char CB){
if(CA=='a' && CB=='a'){
sale='a';
}else if(CA=='a' && CB=='c'){
sale='b';
}else if(CA=='c' && CB=='a'){
sale='c';
}else if(CA=='c' && CB=='c'){
sale='d';
}
return(sale);
}
//INICIO DEL PROGRAMA
void loop() {
int estado1 = digitalRead(living);
int estado2 = digitalRead(cocina);
while(miBT.available()){
//delay(50);
char c=miBT.read();
readString+=c;
}
if(readString.length()>0){
miBT.println(readString);
if (readString =="LIVINGON"){
digitalWrite(living,HIGH);
digitalWrite(RELE,LOW);
}
if (readString =="COCINAON"){
digitalWrite(cocina,HIGH);
}
if (readString =="LIVINGOFF"){
digitalWrite(living,LOW);
digitalWrite(RELE, HIGH);
}
if (readString =="COCINAOFF"){
digitalWrite(cocina,LOW);
}
if (readString =="L"){
luces(estado1,estado2);
}
if (readString =="S"){
sensores(sale,CA,CB);
miBT.write(sale);
}
if (readString =="ABRIR1"){
digitalWrite(ledCerrojo1,LOW);
CA='a';
}
if (readString =="CERRAR1"){
digitalWrite(ledCerrojo1,HIGH);
CA='c';
}
if (readString =="ABRIR2"){
digitalWrite(ledCerrojo2,LOW);
CB='a';
}
if (readString =="CERRAR2"){
digitalWrite(ledCerrojo2,HIGH);
CB='c';
}
readString="";
}