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;
}