11.長時擷取工具

每秒鐘讀取一次A0腳位,蒐集60組後取平均,

每分鐘傳送到Serial port,

LCD 秒數可以顯示百萬 9999999 ;分鐘數可達99999分 (69天)

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3f,16,2);   // 若LCD 無法啟用,請將0X3F 改為0X27

unsigned long t;

unsigned long raw[60];

unsigned long  x = 0 ;

int i,t1,t2,y,k;

float ave ;

int minute = -1;

void disp(){

lcd.setCursor(0,0);

lcd.print("A0=");

lcd.print(y);

lcd.print("    ");

lcd.setCursor(8,0);

lcd.print("ave=");

lcd.print(ave,0);

lcd.print("    ");

lcd.setCursor(9,1);

lcd.print("m=");

lcd.print(minute);

lcd.print("  ");

lcd.setCursor(0,1);

lcd.print("t=");

lcd.print(millis()/1000);

if(k==1&&t2==0){

Serial.print(ave);

Serial.print(" , ");

Serial.println(minute);

}

}

void setup() {

Serial.begin(9600);

  lcd.init();                     

  lcd.backlight(); 

  lcd.clear();

  Serial.println("average , minute");

}

void loop() {

  t1=millis()/100%10;

  if(t1==0){

  y=analogRead(A0);

  i=i+1;

  }

  t2=millis()/1000%60;

  raw[t2]=y ;

  disp();

  if(t2==0){

    k++;

     minute = millis()/1000/60-1; 

    for(int j=0 ;j<60 ;j++){

      x=x+raw[j];

    }

    ave = x/60;    

  }

  if(t2==1){

   k=0; 

  }

  

  x=0;

  

  }