Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <EEPROM.h>
- //#include <DS3231.h>
- //DS3231 rtc(SDA, SCL);
- //Time t;
- float E = 0.00f;
- float R = 0.00f;
- float U = 1.00f;
- float D = 0.00f;
- float Y;
- byte addr = 0;
- byte A_1a = 0;
- float leitura;
- int i;
- //-------------------------------
- void setup()
- {
- Serial.begin(9600);
- EEPROM.get(addr, E);
- addr += sizeof(float);
- EEPROM.get(addr, Y);
- addr += sizeof(float);
- EEPROM.get(addr, D);
- leitura = E;
- Y = E * 10;
- addr = 0;
- }
- //-------------------------------
- void loop()
- {
- //t = rtc.getTime();
- if ( A_1a == 1) //Se não for a 1a vez faça as condicoes
- {
- for (i = 20; i >= 0; i--)
- {
- R = (U * 0.10);
- Y = (Y + R);
- delay(1000);
- }
- Serial.print("i ");
- Serial.println(i);
- E = Y / 10; // O problema está aqui, quando o sistema for reiniciado, preciso que E já comece do valor da eeprom, porém apenas uma
- //vez, pois se eu fizer isso: E= (Y/10)+A; ela sempre vai somar a eeprom na equação, e vai alterar o valor lido pelo
- //sensor.
- Serial.print("E "); Serial.println(E, 5);
- Serial.print("Y "); Serial.println(Y, 5);
- Serial.print("R/Y "); Serial.println((R / Y), 5);
- if (i <= 0)
- {
- // Serial.print("E ");
- // Serial.println(E, 5);
- // EEPROM.put(addr, E);
- addr += sizeof(float);
- // EEPROM.put(addr, Y);
- addr += sizeof(float);
- // EEPROM.put(addr, (R / Y));
- addr = 0;
- Serial.print("20X ");
- }
- }
- else // Se for a 1a vez
- {
- Serial.print("E "); Serial.println(E, 5);
- Serial.print("Y "); Serial.println(Y, 5);
- Serial.print("D "); Serial.println(D, 5);
- A_1a = 1; // Informe que nao e + 1a vez
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement