Tengo el siguiente código de Arduino, lo voy a cortar solo pondré lo que me interesa.... Pero no he podido crear el archivo apk en app inventor ya que no manejo mucho la aplicación, necesito ayuda. Gracias
// ------------------ Bluetooth HC-06 ------------------
#define BT_RX 10 // Arduino RX ← HC-06 TX
#define BT_TX 11 // Arduino TX → HC-06 RX (con divisor 1k + 1k)
// ------------------ Estado ------------------
bool horariosHabilitados = true;
volatile bool enToque = false;
// Tipo de sonido
int tipoTimbre = 1; // 1=Clase, 2=Formación, 3=Reunión
// Selección de horario por Bluetooth
int horarioActivo = 1; // 1=55, 2=50, 3=45
// Lectura de selector (solo usado para activar o no fines de semana)
int contacto4;
// ------------------ Relé ------------------
void timbreON() { digitalWrite(timbre, LOW); }
void timbreOFF() { digitalWrite(timbre, HIGH); }
// ------------------ Nombre en LCD ------------------
String nombreTipo(){
switch(tipoTimbre){
case 1: return "Clase";
case 2: return "Formac";
case 3: return "Reunion";
}
return "Clase";
}
// ------------------ Timbres ------------------
void ringNTimes(int n, int onMs, int offMs){
for(int i=0; i<n; i++){
timbreON(); delay(onMs);
timbreOFF(); if(i<n-1) delay(offMs);
}
}
void ringTipo(int tipo){
switch(tipo){
case 1: ringNTimes(1, tiempo_timbre, 400); break; // Clase
case 2: ringNTimes(2, 2000, 800); break; // Formación
case 3: ringNTimes(3, 1000, 500); break; // Reunión
}
}
void ringEmergencia(int n){
if(n<5) n=5;
ringNTimes(n, 700, 300);
}
void activar_timbre(){
ringTipo(tipoTimbre);
}
// ------------------ HORARIO 1 (55 minutos) ------------------
int h1_c1=7; int m1_c1=00; int s1_c1=0;
int h2_c1=7; int m2_c1=55; int s2_c1=0;
int h3_c1=8; int m3_c1=50; int s3_c1=0;
// ------------------ HORARIO 2 (57 minutos)de 7:30 ------------------
int h1_c2=7; int m1_c2=30; int s1_c2=0;
int h2_c2=8; int m2_c2=25; int s2_c2=0;
int h3_c2=9; int m3_c2=20; int s3_c2=0;
// ------------------ HORARIO 3 (45 minutos) ------------------
int h1_c3=7; int m1_c3=30; int s1_c3=0;
int h2_c3=8; int m2_c3=15; int s2_c3=0;
int h3_c3=9; int m3_c3=00; int s3_c3=0;
// ------------------ SETUP ------------------
void setup(){
pinMode(timbre, OUTPUT);
timbreOFF(); // Arrancar apagado
Wire.begin();
RTC.begin();
Serial.begin(9600);
BT.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.print("Timbre Escolar");
delay(1000);
lcd.clear();
}
// ------------------ DIA SEMANA ------------------
int dia_de_semana(){
int tablaMes[]={0,3,3,6,1,4,6,2,5,0,3,5};
DateTime now = RTC.now();
int n=(now.day()+tablaMes[now.month()-1]+(now.year()-2000)+((now.year()-2000)/4)+6)%7;
lcd.setCursor(13,1);
const char* d[]={"Dom","Lun","Mar","Mie","Jue","Vie","Sab"};
lcd.print(d[n]);
return n;
}
// ------------------ HORARIOS ------------------
void horario_1(){ if(hora==h1_c1 && minuto==m1_c1 && segundo==s1_c1) activar_timbre();
if(hora==h2_c1 && minuto==m2_c1 && segundo==s2_c1) activar_timbre();
void horario_2(){ if(hora==h1_c2 && minuto==m1_c2 && segundo==s1_c2) activar_timbre();
if(hora==h2_c2 && minuto==m2_c2 && segundo==s2_c2) activar_timbre();
void horario_3(){ if(hora==h1_c3 && minuto==m1_c3 && segundo==s1_c3) activar_timbre();
if(hora==h2_c3 && minuto==m2_c3 && segundo==s2_c3) activar_timbre();
if(hora==h3_c3 && minuto==m3_c3 && segundo==s3_c3) activar_timbre();
if(hora==h4_c3 && minuto==m4_c3 && segundo==s4_c3) activar_timbre();
// ------------------ Bluetooth ------------------
void procesarComando(String cmd){
cmd.trim();
cmd.toUpperCase();
if(cmd=="T1"){ tipoTimbre=1; BT.println("Timbre CLASE"); return; }
if(cmd=="T2"){ tipoTimbre=2; BT.println("Timbre FORMACION"); return; }
if(cmd=="T3"){ tipoTimbre=3; BT.println("Timbre REUNION"); return; }
if(cmd=="MAN"){ enToque=true; ringTipo(tipoTimbre); enToque=false; return; }
if(cmd=="F"){ enToque=true; ringTipo(2); enToque=false; return; }
if(cmd=="R"){ enToque=true; ringTipo(3); enToque=false; return; }
if(cmd.startsWith("E")){
int n = cmd.substring(1).toInt();
ringEmergencia(n);
return;
}
if(cmd=="H1"){ horarioActivo=1; BT.println("Horario 55min desde 7"); return; }
if(cmd=="H2"){ horarioActivo=2; BT.println("Horario 55min desde 7:30"); return; }
if(cmd=="H3"){ horarioActivo=3; BT.println("Horario 45min desde 7:30"); return; }
}
// ------------------ LOOP ------------------
void loop(){
DateTime now = RTC.now();
segundo = now.second();
minuto = now.minute();
hora = now.hour();
contacto4 = analogRead(A3);
lcd.setCursor(0,0);
lcd.print("T:");
if(hora<10) lcd.print('0'); lcd.print(hora); lcd.print(':');
if(minuto<10) lcd.print('0'); lcd.print(minuto); lcd.print(':');
if(segundo<10) lcd.print('0'); lcd.print(segundo);
lcd.setCursor(0,1);
lcd.print("Tipo:");
lcd.print(nombreTipo());
lcd.print(" H");
lcd.print(horarioActivo);
r_diaSemana = dia_de_semana();
static String buffer="";
while(BT.available()){
char c = BT.read();
if(c=='\n'){ procesarComando(buffer); buffer=""; }
else buffer+=c;
}
if(horariosHabilitados){
if(!( (r_diaSemana==6 || r_diaSemana==0) && (contacto4 <= 1000) )){
if(horarioActivo==1) horario_1();
if(horarioActivo==2) horario_2();
if(horarioActivo==3) horario_3();
}
}
timbreOFF();
delay(200);
}
