RuiViana

accPotencia.ino

Feb 27th, 2020
322
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define sensorPin A0                                      // Port para leitura analogica
  2. float potencia = 100;                                     // Valor da potencia calculada
  3. float accPotencia = 0;                                    // Valor de potencia acumulada
  4. unsigned long newMillis;                                  // Calculo de intervalo
  5. unsigned long intervalo = 100;                            // Intervalo de acumulo em milissegundos
  6. unsigned long tempo = 3600000;                            // 1 hora em milisegundos
  7. unsigned long imprime = 0;                                // Tempo para impressao
  8. unsigned long contador = 0;                               // Controle da unidade de tempo
  9. //-------------------------------------------
  10. void setup() {
  11.   Serial.begin(115200);                                   // Inicializa Serial
  12.   pinMode(sensorPin, INPUT);                              // Port ADC como entrada
  13.   newMillis = millis();                                   // Inicializa intervalo
  14.   imprime = millis();                                     // Inicializa controle impressao
  15. }
  16. //-------------------------------------------
  17. void loop()
  18. {
  19.   potencia = analogRead(sensorPin);
  20.   //potencia = 100;                                        // Teste
  21.   if (millis() - imprime > 1000)                           // Imprime a cada segundo
  22.   {
  23.     imprime = millis();
  24.     Serial.print(" Consumo instataneo : ");
  25.     Serial.print(potencia);
  26.     Serial.print("W   ");
  27.     Serial.print("  Consumo hora : ");
  28.     Serial.print((accPotencia * tempo) / (contador));
  29.     Serial.println("W   ");
  30.   }
  31.   //        Esta rotina abaixo vai acumualr a potencia a cada intervalo definido
  32.   if (millis() -  newMillis >= intervalo)                 // Se passou o intervalo
  33.   {
  34.     newMillis = millis();                                 // Reinicializa intervalo
  35.     accPotencia = accPotencia + potencia / tempo;         // Acumula potencia
  36.     contador ++;                                          // incrementa controle de calculo
  37.   }
  38. }
RAW Paste Data