Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. //Pseudocode
  2.  
  3. count=0
  4. while new_reading and count<7:
  5. sum += new_reading //Calculate the sum of first 7 values
  6. count++
  7.  
  8. while new_reading: //Loop till new readings available
  9. avg = sum / 7 //Calculate average
  10. sum -= avg //Subtract average from sum
  11. sum += new_reading //Add next reading to sum
  12. print avg
  13.  
  14. average = (weight1*average+weight2*new_value)/(weight1+weight2);
  15.  
  16. uint8_t[28] highbits;
  17. uint32_t lowbits;
  18.  
  19. void getvalue(uint8_t index, uint16_t value){
  20. highbits[index] = value>>1;
  21. uint32_t flag = (value & 1)<<index;
  22. highbits|=flag;
  23. highbits&=~flag;
  24. }
  25.  
  26. uint16_t getAverage(){
  27. uint16_t sum=0;
  28. for(uint8_t i=0;i<28;i++){
  29. sum+=highbits[i];
  30. }
  31. sum<<=1;//multiply by 2 after the loop
  32. sum+=bitcount(lowbits);
  33. return sum/28;
  34. }
  35.  
  36. // untested code
  37. // static variables
  38. uint16_t daily_energy[7]; // perhaps in units of 0.01 kWh ?
  39. uint16_t weekly_energy[4]; // perhaps in units of 0.1 kWh ?
  40.  
  41. void print_week_status(){
  42. Serial.print( F("last week's total energy :") );
  43. Serial.println( weekly_energy[0] );
  44. int sum = 0;
  45. for( int i=0; i<4; i++ ){
  46. sum += weekly_energy[i];
  47. };
  48. Serial.print( F("Total energy over last 4 complete weeks :") );
  49. Serial.println( sum );
  50. int average_weekly_energy = sum/4;
  51. int average_daily_energy = average_weekly_energy/7;
  52. Serial.print( F("Average daily energy over last 4 weeks :") );
  53. Serial.println( average_daily_energy );
  54. }
  55. void print_day_status(){
  56. Serial.print( F("Yesterday's energy :") );
  57. Serial.println( daily_energy[0] );
  58. Serial.print( F("average daily energy over the last 7 complete days: ") );
  59. int sum = 0;
  60. for( int i=0; i<7; i++ ){
  61. sum += daily_energy[i];
  62. };
  63. int average = sum/7;
  64. Serial.println( average );
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement