Hi all,
below i have attached some code i have for a school project. i have a temp sensor actively reading and have hardcoded the measurements for now. If you want to try the code just comment out the sampling parts and hard code a temperature in. Anyways i am trying to use the EEPROM to store a sample from a time period then retrieve it and print it. once it prints my device has assertion failure. Not sure why… any help?
Thanks
int Temp = A2; // This is where your photoresistor is plugged in. The other side goes to the "power" pin (below).
float TempIn; // Here we are declaring the integer variable analogvalue, which we will use later to store the value of the photoresistor.
float CT1Average = 35.55;
float CT1Maximum = 45;
float CT2Average = 47.55;
float CT2Maximum = 55;
int numMarkedData = 0;
int count = 0;
class markedData {
private:
float CT1Average1, CT1Maximum1, CT2Average1, CT2Maximum1, TempIn1;
String MeasTime;
public:
//Constructor for object
markedData(float CT1AverageIn, float CT1MaximumIn, float CT2AverageIn, float CT2MaximumIn, float TempIn, String MeasTimeIn){
CT1Average1 = CT1AverageIn;
CT1Maximum1 = CT1MaximumIn;
CT2Average1 = CT2AverageIn;
CT2Maximum1 = CT2MaximumIn;
TempIn1 = TempIn;
MeasTime = MeasTimeIn;
}
//get method for retrieving CT1 Average
float getCT1A (){
return CT1Average1;
}
//get method for retrieving CT1 Maximum
float getCT1M (){
return CT1Maximum1;
}
//get method for retrieving CT2 Average
float getCT2A (){
return CT2Average1;
}
//get method for retrieving CT2 Maximum
float getCT2M (){
return CT2Maximum1;
}
//get method for retrieving Temperature
float getTemp (){
return TempIn1;
}
//get method for retrieving the time of measurement
String getTime (){
return MeasTime;
}
};
// Next we go into the setup function.
void setup() {
pinMode(Temp, INPUT);
Serial.begin(9600);
Particle.subscribe("hook-response/Device Data", myHandler, MY_DEVICES);
Time.zone(-4);
}
void loop() {
TempIn = ((analogRead(Temp)*0.0008)*100)-273.15;
Serial.printf("Temperature = %.2f \n \r", TempIn);
String MeasTime = Time.timeStr();
String Measurements = (String::format("%.2f,%.2f,%.2f,%.2f,%.2f", CT1Average, CT1Maximum, CT2Average, CT2Maximum, TempIn))+","+MeasTime;
markedData Measurement (CT1Average, CT1Maximum, CT2Average, CT2Maximum, TempIn, MeasTime);
size_t AvailableLength = EEPROM.length();
Serial.println(Measurements);
String MeasurementsObject = (String::format("%.2f,%.2f,%.2f,%.2f,%.2f", Measurement.getCT1A(), Measurement.getCT1M(), Measurement.getCT2A(), Measurement.getCT2M(), Measurement.getTemp()))+","+Measurement.getTime();
Serial.println(MeasurementsObject);
Serial.println(AvailableLength);
while(numMarkedData<2){
EEPROM.put(numMarkedData, Measurement);
numMarkedData=numMarkedData + 1;;
}
markedData value(0,0,0,0,0,Time.timeStr());
if (count ==0){
EEPROM.get(1,value);
count++;
}
Serial.println(value.getCT1A());
Serial.println(value.getCT1M());
Serial.println(value.getCT2A());
Serial.println(value.getCT2M());
Serial.println(value.getTemp());
Serial.println(value.getTime());
//delay 1 second every 1000
delay(10000);
}
void myHandler(const char *event, const char *data) {
// Handle the integration response
}