運動學教具(編碼盤)
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);
}