I have the following simple program.
The problem is with
var1++. It doesn't increase the value of
var1. It always stays 0.00. Actually I can't perform any operation with
var1 as rValue. I I put something like
var1=3.14 the value changes and gets stored.
What am i missing?
#include <EEPROM.h>
#include "ee.h"
#define sw_0 A5
float var1;
float a = 0.0;
void read_c(){
EEPROM_readAnything(4, var1);
}
void write_c(){
EEPROM_writeAnything(4, var1);
}
void setup() {
read_c();
Serial.begin(9600);
pinMode(sw_0, INPUT);
}
void loop(){
if (digitalRead(sw_0) == LOW) {
var1++;
delay(100);
write_c();
}
Serial.print(millis()/1000);
Serial.print(" ");
Serial.println(var1);
delay(1000);
}
ee.h:
#include <WProgram.h>
template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
const byte* p = (const byte*)(const void*)&value;
int i;
for (i = 0; i < sizeof(value); i++)
EEPROM.write(ee++, *p++);
return i;
}
template <class T> int EEPROM_readAnything(int ee, T& value)
{
byte* p = (byte*)(void*)&value;
int i;
for (i = 0; i < sizeof(value); i++)
*p++ = EEPROM.read(ee++);
return i;
}