宜昌老张

Arduino和Labview互动之摇摇铃(视频)

0
阅读(2511)

这篇文章的主角是一款基于弹簧摆动原理设计的震动传感器,震动势能传到弹簧末端引起共振,左右摆动碰触到金属外壁形成通路。由于导通时间和弹簧的刚性有关,所以该震动传感器的输出带宽很窄,在使用Arduino读取时,建议使用外部中断功能。

震动传感器如图所示:


 

 本实验的Arduino设备源于DFrobot官方旗舰店: http://dfrobot.taobao.com/

这个实验的目的是:摇一下与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程序打包下载:

19463141812104.rar