Arduino - Programa se queda trabado en EEPROM.GET

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 20 puestos en Arduino (en relación al último mes)
Gráfica de Arduino

Programa se queda trabado en EEPROM.GET

Publicado por David (1 intervención) el 06/03/2021 19:09:10
Buenas tardes foro, es mi primer posteo en el foro. Soy David de Argentina y tengo un problema con un programa que al llegar a leer la eeprom, la lee pero se queda hay no vuelve al loop. no le encuentro la logica. Les comento que lo que hace asi lo entienden mas facil, se le envia un sms con la palabra la cual se encarga de saber en que agenda guardar, guarda los numeros y los lee. Por logica una vez leido deberia volver al loop para esperar en este caso un nuevo mensaje, si anulo toda la linea del GET, el programa recibe el mensaje lo procesa, lo guarda y vuelve a esperar un nuevo mensaje pero cuando habilito el GET para leer lo que se grabo se queda tildado hay. Les dejo el codigo haber si me pueden ayudar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <EEPROM.h>
#include <Separador.h>
#include <Sim800l.h>
#include <SoftwareSerial.h>
Sim800l Sim800l;
Separador S;
String textSms, numberSms;
 
 
 
 
 
////////////////////////////////// Estructura para agendar administradores (Max 3 usuarios) //////////////////////////////////
 
struct Administradores
{ String aDnumero1 ;
  String aDnumero2 ;
  String aDnumero3 ;
 
} ;
 
////////////////////////////////////// Estructura para agendar avisos (Max 5 usuarios) //////////////////////////////////////
 
struct Avisos
{ String aVnumero1 ;
  String aVnumero2 ;
  String aVnumero3 ;
  String aVnumero4 ;
  String aVnumero5 ;
} ;
 
void setup() {
 
 
  Serial.begin(9600);
  Sim800l.begin();
  Sim800l.reset();
 
  Sim800l.delAllSms();
 
}
 
void loop() {
 
  Serial.println("Esta el bucle en funcionamiento a la espera de otro msj");
  textSms = Sim800l.readSms(1);
 
    if (textSms.length() > 7)
    {
 
      numberSms = Sim800l.getNumberSms(1);
 
      textSms.toUpperCase();
 
      if (textSms.indexOf("ATC") != -1) {
        Serial.println("Se recibio el comando para agregar administradores");
        delay(500);
        agenAdm();
 
      }
      else if (textSms.indexOf("ATA") != -1) {
        Serial.println("Se recibio el comando para agregar numeros de avisos");
        delay(50);
        agenAvi();
 
      }
      else {
        Serial.println("Comando no compatible");
 
      }
      Sim800l.delAllSms();
    }
 
}



Les dejo el codigo solo de agenAvi() ya que el de administrador es igual (cambia la direccion de lectura)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
void agenAvi() {
 
  String datosRecibidos =  Sim800l.readSms(1);
 
  String elemento1 = S.separa(datosRecibidos, ',', 5);
  String elemento2 = S.separa(datosRecibidos, ',', 6);
  String elemento3 = S.separa(datosRecibidos, ',', 7);
  String elemento4 = S.separa(datosRecibidos, ',', 8);
  String elemento5 = S.separa(datosRecibidos, ',', 9);
 
  Serial.println("Numero 1 recibido: " + elemento1);
  Serial.println("Numero 2 recibido: " + elemento2);
  Serial.println("Numero 3 recibido: " + elemento3);
  Serial.println("Numero 4 recibido: " + elemento4);
  Serial.println("Numero 5 recibido: " + elemento5);
 
  Avisos datosVarAVI;
  {
    Avisos Datos ;
    datosVarAVI.aVnumero1 = elemento1 ;
    datosVarAVI.aVnumero2 = elemento2 ;
    datosVarAVI.aVnumero3 = elemento3 ;
    datosVarAVI.aVnumero4 = elemento4 ;
    datosVarAVI.aVnumero5 = elemento5 ;
  };
 
  Serial.print("Esto se grabara en numero 1: "); Serial.print(datosVarAVI.aVnumero1) ;
  Serial.println("");
  Serial.print("Esto se grabara en numero 2: "); Serial.print(datosVarAVI.aVnumero2) ;
  Serial.println("");
  Serial.print("Esto se grabara en numero 3: "); Serial.print(datosVarAVI.aVnumero3) ;
  Serial.println("");
  Serial.print("Esto se grabara en numero 4: "); Serial.print(datosVarAVI.aVnumero4) ;
  Serial.println("");
  Serial.print("Esto se grabara en numero 5: "); Serial.print(datosVarAVI.aVnumero5) ;
  Serial.println("");
 
  int eeAddress = 45;
 
  EEPROM.put(eeAddress, datosVarAVI);
  Serial.println("Se han guardado los numeros!\n");
 
  delay(500);
  Serial.println("Ahora leo la agenda!");
 
 
 Avisos leoDatosAVI;
  eeAddress = 45;
 
  EEPROM.get(eeAddress, leoDatosAVI);
 
  Serial.println("Agenda de avisos:\n");
  Serial.print("Numero 1:");  Serial.println(leoDatosAVI.aVnumero1);
  Serial.print("Numero 2:");  Serial.println(leoDatosAVI.aVnumero2);
  Serial.print("Numero 3:");  Serial.println(leoDatosAVI.aVnumero3);
  Serial.print("Numero 4:");  Serial.println(leoDatosAVI.aVnumero4);
  Serial.print("Numero 5:");  Serial.println(leoDatosAVI.aVnumero5);
 
Sim800l.delAllSms();
 
 //Env();
 
}

Esto es lo que devuelve el Serial

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Esta el bucle en funcionamiento a la espera de otro msj
117
Se recibio el comando para agregar numeros de avisos
Numero 1 recibido: 2236965167
Numero 2 recibido: 4746
Numero 3 recibido: 4757
Numero 4 recibido: 47547
Numero 5 recibido: 4755
 
OK
 
Esto se grabara en numero 1: 2236965167
Esto se grabara en numero 2: 4746
Esto se grabara en numero 3: 4757
Esto se grabara en numero 4: 47547
Esto se grabara en numero 5: 4755
 
OK
 
Se han guardado los numeros!
 
Ahora leo la agenda!
Agenda de avisos:
 
Numero 1:2236965167
Numero 2:4746
Numero 3:4757
Numero 4:47547
Numero 5:4755
 
OK

Desde ya muchs gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder