
这篇文章的主角是一款基于弹簧摆动原理设计的震动传感器,震动势能传到弹簧末端引起共振,左右摆动碰触到金属外壁形成通路。由于导通时间和弹簧的刚性有关,所以该震动传感器的输出带宽很窄,在使用Arduino读取时,建议使用外部中断功能。
震动传感器如上图所示:
这个实验的目的是:摇一下与Arduino控制器数字接口2相连的震动传感器,会使PC机的Labview前面板的带声音,带动画的摇摇铃工作起来,再摇一下,摇摇铃停止,再摇一下,又开始工作,蛮好玩!下面视频右图是Labview前面板的摇摇铃,左图是用摄像头录制的震动传感器摇动实况,这两个画面是同步的。
youKu视频转码时,把上面视频的图像质量和色彩改变了,我摇摇铃明明是红色,却变为了蓝色。看看下面的Labview前面板吧,不过这样是视频,也可以理解,实验任务完成的很好!
Labview前面板:

Labview框图程序:(双击图片,放大看)

Arduino控制器的程序:
/*程序任务:震动传感器摇动,则摇摇铃工作 再摇传感器,则摇摇铃停止工作,以此往复*/ int ledPin = 9; //摇摇铃工作,则灯亮,否则灯熄 //摇摇铃在上位机Labview前面板上 //val是Arduino控制器上传给Labview的“摇摇铃工作”标识符变量 byte val=0x00; boolean flag=false;//摇摇铃是否工作标志 int interupt_number=0;//中断计数值
void setup() { Serial.begin(9600); //串口波特率设置 //震动传感器连在数字接口2,输出信号,引发中断 //数字接口2为外部中断0,当有下降沿触发的时候调用YoYo_ring函数 attachInterrupt(0, YoYo_ring, FALLING); pinMode(ledPin, OUTPUT);//设置LED为输出 digitalWrite(ledPin,HIGH);//熄灭LED } void loop() { if(interupt_number!=0)//如果震动传感器引发的中断次数不为0 flag=!flag;//则摇摇铃是否工作标志 //如果“摇摇铃是否工作标志”为true if(flag==true) { interupt_number=0;//中断计数值清零 digitalWrite(ledPin, LOW);//点亮LED val=0xff; Serial.print(val,BYTE);//向上位机LABVIEW上传摇摇铃工作标志 } //如果“摇摇铃是否工作标志”为false else if(flag==false) { interupt_number=0;//中断计数值清零 digitalWrite(ledPin,HIGH);//熄灭LED val=0x00; Serial.print(val,BYTE);//向上位机LABVIEW上传摇摇铃停止标志 } delay(400);// }
void YoYo_ring() { //进入中断子程序,则中断计数值加1 interupt_number++; }
这是不是就是传说中的“互动媒体技术”,如果是,那么Labview和Arduino也可以做出很多这样的作品。Labview里起码有3个技术可以有助于完成互动媒体项目。1、自定义控件,2、XControl控件,3、属性节点。
已经写了25篇有关Arduino的研讨文章了,暂时告个段落。下面要转移个话题。
Labview和Arduino程序打包下载:摇摇铃.rar |