Hi folks,
I’m using the Particle Photon in a simple project of an IoT Scale conect to a firebase database. The prototype was working fine until some weird happen. After a local internet fault my Photon stopped to work and a red led started to blink in the Photon and the device simply resets. It was the SOS code with the indication of “hard fault” (one blink between 2 SOS signals).
To solve this issue I started to debug the software (that was working before…) and I have to put the code for some functions that I’ve created inside the program. This, apparently solved the problem, but I’d like to use the functions to organize the code.
I suspect could be the device OS upgrade to the 2.0 version, or some problem related to the memory, but I’m very intrigued with this issue. Below a piece of code I’m using:
void loop(){
scale.power_up();
//Verifica se houve mudança no valor medido
medida = (scale.get_units(10));
// Evita envio de medidas negativas - verificar fator de calibração para tentar
resolver esta questão
if(medida<0){medida=0;}
if((medida > medida_anterior+0.2 || medida < medida_anterior - 0.2 ) && (timerFlag == true)){
Particle.publish("weightChange");
atualizar_Medida = true;
}
if (atualizar_Medida == true){
medida_anterior = medida;
lcd->clear();
lcd->setCursor(6 ,0 );
lcd->print("Peso");
lcd->setCursor(4 ,1 );
lcd->print(medida);
lcd->setCursor(10 ,1);
lcd->print("kg");
atualizar_Medida = false;
//Evita publicação na nuvem em duplicata
if (pubFlag == true){
//publicar_na_nuvem(); <===**This is the function that I have to comment**
**<=== Here starts the function body I have to insert... ====>**
String timeStamp = Time.timeStr();
timeStamp = Time.format("%d/%m/%y %H:%M:%S");
String scaleID = System.deviceID();
String Data="{\"scaleID\":\""+ scaleID +"\",";
Data+="\"medidaEm\":\""+String(timeStamp)+"\",";
Data+="\"peso\":\""+String(medida,2)+"\"}";
Particle.publish("medidas", Data, PUBLIC);
//DEBUG_PRINT("Publicou na nuvem");
**<<---Here ends the function code >>>**
pubFlag = false;
}
}
scale.power_down();
// Repete o loop a cada 1s
int startTime = millis();
while(true){
if(millis()-startTime >= 1000){
timerFlag = true;
pubFlag = true;
break;
}
timerFlag = false;
}
}
Someone have some idea of the problem and a best solution?
Thanks in advance 
