本实验需要一个Arduino开发板,一个超声波传感器元件,一台安装了 Flash cs3和Arduino软件的计算机。
首先对Arduino开发板写入一下程序:
......此处省略若干定义语句
void loop () { //主程序
上述写在Arduino里的程序的功能主要是读出超声波传感器发射超声波到接受反射回来的波所经过的时间差,然后将这个时间差发送出去,让电脑接收。
写入程序后,将超声波传感器的输入输出端连接到Arduino的端口4和端口5,电源输入端连接到Arduino的高电平输出端,接地端连接到Arduino的接地端。这样超声波传感器与Arduino的连接就完成了。接下去开始写计算机端的Flash程序。
Arduino与Flash并不能直接通信,必须通过一个服务器转接,这里选择Serproxy进行转接。Serproxy的作用在于它会建立一个xml服务器,将来自Arduino的数据转换为xml格式,储存在它零时建立的虚拟服务器上。然后Flash便可以从serproxy建立的虚拟服务器中读取xml格式的数据。Serproxy服务器从国外的网站www.arduino.cc上直接下载得到。下面编写Flash端的程序,因为代码过多,此处省去。
程序完成了将得到的从Arduino发送的时间间隔转换为距离值,并且完成将距离值实时显示出来,以及用屏幕上的物块来实时模拟实际物体的移动。在按下记录按钮后能够每5ms读取一个数据,然后对每四个数据取平均,以每20ms记录一次将这些数据依次记录到数组中,并依次显示出来,同时画出距离—时间图像,同时还可以通过对图像的选择来保留选中的数据。
通过上诉程序,可以看到通过Arduino和Flash开发的这个课件具有实时的测量并记录物体位移的功能。有了这个功能,可以完成很多物理实验,例如研究物体加速度与力、质量的关系,研究小球简谐运动的图像等等。当然,这个课件在数据处理上的功能可能并不强大,但是我们可以将课件中记录下来的距离数据复制到excel中,利用excel强大的功能来进行数据的分析和处理,甚至计算出每个时刻物体的速度,画出速度—时间图像等等。