Also note the use of subtraction instead of addition when comparing timer values.
Then, you potentially cause an overflow here:
lastReadTime += refresh_rate;
Shouldn't what is being recorded by when an action last occurred (millis()) not some future time when the action should happen again?
In any case, refresh_rate should not be a float.