原创 用Labview开启Arduino密码锁

2010-9-3 10:16 3756 8 8 分类: MCU/ 嵌入式

这个实验用到了5个模块,1、Arduino控制器 2、传感器扩展板 3、无线数传 4、蜂鸣器 5、指示灯


实验任务是:Labview发送4位数的密码给Arduino控制器,如果这个密码与Arduino控制器设定的密码一致,则指示灯常亮。密码不对,则蜂鸣器发出刺耳的报警声,同时指示灯闪烁。


实验照片:


28931fd6-1375-4da8-98d6-d06e28b02be3.jpg


labview前面板如图:


a67b7d77-b7fe-43fd-820f-b551bf6fb119.jpg


看到上图,正确的密码是多少?


Labview框图程序如图:


9feb867e-22b6-482a-a0d7-e56b5cd5604c.jpg


 Arduino程序:


//变量声明
byte thousand;
byte hundred;
byte ten;
byte one;
int speak =  3;    //蜂鸣器模块接于数字口3
int led = 9; //指示灯模块接于数字口9
boolean speak_state = false;
boolean flag = false;
//初始化
void setup()  
{       
  Serial.begin(9600);  //串口波特率设置
  pinMode(speak, OUTPUT); //设置为输出模式
  digitalWrite(speak,HIGH); //初始化让喇叭不响
  pinMode(led, OUTPUT);
  digitalWrite(led,HIGH);//初始化让灯不亮
}
 //由参数t形成不同的频率
void Alarm(int t)
{
  int i,j;
  for(int i=0;i<200;i++)
  {
     speak_state=!speak_state;
     digitalWrite(speak,speak_state);    
     for(j=0;j<t;j++)
     delayMicroseconds(10);            
  }
}
//主程序
void loop()                    
{
   //如果查询上位机通过串口已经发来有四个字节的密码
   if(Serial.available()==4)
    {
      flag= true;
      thousand=Serial.read(); //读取千位
      hundred=Serial.read();//读取百位
      ten=Serial.read();//读取十位
      one=Serial.read();//读取个位     
    }
  if(flag == true)
  {
    int sum;//总数
    sum=thousand*1000+hundred*100+ten*10+one;
    //如果密码正确
    if (sum ==5768)
    {
      digitalWrite(led,LOW);    //让灯亮
       digitalWrite(speak,HIGH); //让喇叭不响
    }
     //如果密码不正确
    else
    {
      //让灯闪烁,让喇叭报警
      digitalWrite(led,LOW);
      Alarm(90); 
      Alarm(140);
      digitalWrite(led,HIGH);
      Alarm(90);
      Alarm(140);
    }  
  }


Arduino和labview程序打包下载:


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /3 下一条