本实验所需器件与第二个实验相同。但是连线方式有所区别,先将Arduino的电源输出接到两个光电门,然后再将光电门1的信号输出线接到Arduino的第10个端口,光电门2的信号输出线接到Arduino的第11个端口。对Arduino写入下列程序(只有主要程序段):
……
void loop () {
if(digitalRead(inputPin1) ==HIGH&&i1==0) //如果光电门1被挡光,则运行
{ t1=micros(); //将当前系统的时间赋值给t1,精确到1微秒
i1=1;}
if(digitalRead(inputPin2)==HIGH&&i2==0) /如果光电门2被挡光,则运行
{ t2=micros();//将当前系统的时间赋值给t2,精确到1微秒
i2=1;}
if(digitalRead(inputPin1) ==LOW&&i1==1)//如果光电门1挡光结束,则运行
{ tt1=micros(); //将当前系统的时间赋值给tt1
t1=tt1-t1; //重新计算t1=tt1-t1,也就是从挡光到挡光结束的时间差
i1=0;
Serial.print("l"); //发送字符”l”,用于flash端处理用
Serial.print(t1); //发送t1
Serial.print(0,BYTE); } //发送结束字段
if(digitalRead(inputPin2)==LOW&&i2==1)
{ ……与光电门1的代码类似,此处省略…… }
……
可以看到Arduino端程序的作用是发送两个光电门各自被挡光的时间间隔,利用字符“l”和“r”来区分两个光电门。这段程序能够识别发送的时间间隔是哪个光电门的。所以在Flash端可以实现更多的功能。下面笔者介绍用此传感器进行《探究碰撞中的不变量》课件的制作。
本实验需要测量的有质量和速度,需要计算的有mv、mv2、v/m等。质量用天平测完后直接填入课件中,速度由光电门测得的数据计算得到。
因为是探究课,所以需要计算的一些量不能全部都显示在课件上,只有当学生猜想到某个量时,才可以将这个量的计算值显示出来,而这是普通的商用传感器软件所没法完成的。除了这个功能外,还需要在课件上实时的显示滑块的位置,以便使学生能更直观的了解到滑块的运动。
笔者根据上诉想法,制作了《探究碰撞中的不变量》这堂课的实验部分课件。以下就是一些课件界面的截图,有关代码部分因为字数过多省去。
|
首先显示的界面很简单,只有一些最基本的测速部分。导轨上也只有一个滑块。可以通过这个来讲解测速原理。在实际实验时课件上滑块的位置会随着真实滑块的运动而改变位置,两个速度框里会实时显示滑块通过光电门时的速度。在课件的右下角有一些有图案的按钮,通过点击这些按钮可以实现不同情况的碰撞探究。以下是探究两个物体相对运动发生碰撞的情况。可以看到点击按钮后会出现一个用来记录实验数据的表格。此时只要填入两个物体的质量和挡光片的宽度,然后使两个滑块相对运动发生碰撞,课件便会自动计算出两个滑块碰前和碰后的速度,并可以通过点击填入速度按钮来选择是否采用这组数据。
|
当采集到了三组数据后,可以让学生通过这些数据进行猜想,然后通过学生的猜想来进行具体数据的计算。这些可以通过课件右下角的几个彩色圆点按钮来实现,当然我们在之前必须设计足够多的猜想结果。点击原点按钮后显示的情况如下图所示:
|
通过点击计算按钮,课件便会计算出我们想要计算的结果。通过观察这些结果来验证学生的猜想是否正确。