Main reason why Im interested in this. Im measuring consumption and wattage of blinking led light. So I need average values for current and voltage (like from 5 seconds). So I thought if I make for loop, which will repeat like for milion times it will make average value..
unsigned long msec = 0;
float time = 0.0;
int sample = 0;
float totalCharge = 0.0;
float averageAmps = 0.0;
float ampSeconds = 0.0;
float ampHours = 0.0;
float wattHours = 0.0;
float amps = 0.0;
int i,k;
float current1, current2, current;
float wh;
unsigned long previousMillis = 0;
unsigned long currentMillis;
long interval=1;
void setup() {
Serial.begin(9600);
}
void loop() {
int resistance = analogRead(A0);
float Uresistance = resistance* (5.0 / 1023.0);
int resistancediode = analogRead(A2);
float Uresistancediode = resistancediode * (5.0 / 1023.0);
float current1=Uresistance/0.47;
for (long i=0; i <= 1000000; i++){
current2=current2+current1;
if (i=1000000) current=current2/1000000;
}
float voltage=Uresistancediode - Uresistance;
float wattage=current*voltage;
sample = sample + 1;
msec = millis();
time = (float) msec / 1000;
totalCharge = totalCharge + current;
averageAmps = totalCharge / sample;
ampSeconds = averageAmps*time;
ampHours = ampSeconds/3600;
float wattSeconds = voltage * ampSeconds;
wattHours = voltage * ampHours;
wh=wh + ((wattage*time)/1);
currentMillis = millis();
if(currentMillis - previousMillis > 1000) {
previousMillis = currentMillis;
Serial.print("Current: ");
Serial.print(current);
Serial.println(" A");
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.println(" V");
Serial.print("Wattage: ");
Serial.print(wattage);
Serial.println(" W");
Serial.print("Consumption: ");
Serial.print(wh);
Serial.println(" Ws");
Serial.print(" ");
Serial.print(wh/3600);
Serial.println(" Wh");
Serial.print("Time of run: ");
Serial.print(time);
Serial.println(" s");
Serial.println();
}
}