單擺測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(){}