運動學教具(編碼盤)

unsigned long i = 0 ;

unsigned long dt,t1,t2,t,t3,t4;

int s,r,y;

double x,x2,x1,dx,a,v2,v1,dv;

int f ;

void setup() {

Serial.begin(9600);

pinMode(4,INPUT);

f= digitalRead(4);

}

void loop() {

if(f==1){

do{

s = digitalRead(4);

t=millis();

t3=t-t1;

t4=t3%100;

if(t3>1000&&t4==0){

dt=100;

x2=0;

v2=0;

a=0;

disp();

}

}while(s==1);

i++;

Serial.println(i);

x=i/2.0000;

r=i%5;

if(r==0){

t2=millis();

compute();

t1=t2;

x1=x2;

v1=v2;

}

do{

s = digitalRead(4);

t=millis();

t3=t-t1;

t4=t3%100;

if(t3>1000&&t4==0){

dt=100;

x2=0;

v2=0;

a=0;

disp();

}

}while(s==0);

}

if(f==0){

do{

s = digitalRead(4);

t=millis();

t3=t-t1;

t4=t3%100;

if(t3>1000&&t4==0){

dt=100;

x2=0;

v2=0;

a=0;

disp();

}

}while(s==0);

i++;

Serial.println(i);

x=i/2.0000;

r=i%5;

if(r==0){

t2=millis();

compute();

t1=t2;

x1=x2;

v1=v2;

}

do{

s = digitalRead(4);

t=millis();

t3=t-t1;

t4=t3%100;

if(t3>1000&&t4==0){

dt=100;

x2=0;

v2=0;

a=0;

disp();

}

}while(s==1);

}

}

void compute(){

dt=t2-t1;

x2=x ;

dx=x2-x1;

v2=10*dx/dt;

dv=v2-v1;

a=1000*dv/dt;

disp();

}

void disp(){

Serial.print("dt=");

Serial.print(dt);

Serial.print(" x=");

Serial.print(x2);

Serial.print(" v=");

Serial.print(v2);

Serial.print(" a=");

Serial.println(a,3);

}