單擺測g值
#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
int limit ;
int sensor = A0;
float g ;
int x ;
long t1 ;
long t2 ;
long y ;
int i= -1 ;
double frequency ;
void setup(){
Serial.begin(9600);
lcd.begin(16,2);
y=0 ;
for(int r=0 ; r<10 ; r++){
y = y + analogRead(sensor) ;
}
limit = y / 10 - 50;
while(1){
do{
x = analogRead(sensor);
}while( x>= limit);
t1 = millis();
i++;
float T = (t1 - t2)/1000.000 ;
g = 4*3.141592654*3.141592654*0.50/T/T ;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T=");
lcd.setCursor(2, 0);
lcd.print(T,3);
lcd.setCursor(13, 0);
lcd.print("sec");
lcd.setCursor(0, 1);
lcd.print("g=");
lcd.setCursor(2, 1);
lcd.print(g,3);
lcd.setCursor(10, 1);
lcd.print("m/s^2");
do{
x = analogRead(sensor);
}while( x <= limit );
do{
x = analogRead(sensor);
}while(x >= limit) ;
do{
x = analogRead(sensor);
}while( x <= limit );
do{
x = analogRead(sensor);
}while(x >= limit) ;
t2 = millis();
i++;
T = (t2 - t1)/1000.000 ;
g = 4*3.141592654*3.141592654*0.50/T/T ;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T=");
lcd.setCursor(2, 0);
lcd.print(T,3);
lcd.setCursor(13, 0);
lcd.print("sec");
lcd.setCursor(0, 1);
lcd.print("g=");
lcd.setCursor(2, 1);
lcd.print(g,3);
lcd.setCursor(10, 1);
lcd.print("m/s^2");
do{
x = analogRead(sensor);
}while( x<= limit );
do{
x = analogRead(sensor);
}while( x >= limit );
do{
x = analogRead(sensor);
}while( x<= limit );
}
}
void loop(){}