您现在的位置: 晨光科技 >> 文章 >> 技术 >> 单片机 >> 正文  
  一条能互动的食人鱼           
一条能互动的食人鱼
[ 作者:佚名    转贴自:http://www.eefocus.com/zhang700309/blog/11-11/233945_3ef3e.html    点击数:35    更新时间:2018/5/10    文章录入:LA ]
[注:本站登载的某些文章并不代表本站支持或反对其观点或肯定其真实性]

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

    看到那条光彩夺目的食人鱼LED了吗?它正在和两个按钮互动,按下Open按钮,食人鱼亮,按下Close按钮,食人鱼熄。

 

   按钮是输入,食人鱼LED为输出,输入与输出之间的逻辑关系靠Arduino控制器来编程。

 

/*  按下Open按钮,食人鱼LED亮,按下Close按钮,食人鱼LED亮熄。
 注意:大按钮模块和食人鱼模块都是低电平有效。
 大按钮模块按下时,为低电平,松开为高电平,
食人鱼模块,低电平亮,高电平熄。
  这个电路:
 * 食人鱼LED连在数字接口9上
 * Open按钮连在数字接口7上
 * Close按钮连在数字接口6上 */
// int 前面有 const说明Open_button、Close_button和ledPin是常量
// 设置数字接口:
const int Open_button = 7;    
const int Close_button = 6;
const int ledPin =  9;

void setup() {
  pinMode(Open_button,INPUT);//设置按钮为输入
  pinMode(Close_button,INPUT);
  pinMode(ledPin, OUTPUT);//设置食人鱼LED为输出
  digitalWrite(ledPin,HIGH);//熄灭食人鱼
}
void loop()

  // int 前面有 const说明以下定义的是变量:
  // 读Open按钮状态到局部变量read_Openbutton:
  int read_Openbutton = digitalRead(Open_button);
  // 读Close按钮状态到局部变量read_Closebutton:
  int read_Closebutton = digitalRead(Close_button);
  if (read_Openbutton ==LOW) //判断Open按钮是否按下
  {
    delay(50);//延时50毫秒
    read_Openbutton = digitalRead(Open_button);
    if (read_Openbutton ==LOW)//为防抖,再次判断Open按钮是否按下
    {
      digitalWrite(ledPin, LOW);//点亮食人鱼
    }
  }
  if (read_Closebutton ==LOW)//判断Close按钮是否按下
  {
    delay(50);//延时50毫秒
    read_Closebutton = digitalRead(Close_button);
    if (read_Closebutton ==LOW)//为防抖,再次判断Close按钮是否按下
    {
      digitalWrite(ledPin,HIGH);//熄灭食人鱼
    }
  }
}

不要按钮,上位机软件labview也可以与这条食人鱼互动。 

 

在Labview的前面板上,按下“点亮”按钮,与下位机Arduino控制器相连的食人鱼LED被点亮,同时LED被点亮的状态反馈到上位机,labview的绿灯也亮。前面板上,按下“熄灭”按钮,食人鱼LED被熄灭,labview的绿灯也随之熄灭。上下位机通过串口都执行了读写命令。可以看看以下labview程序框图和Arduino串行通信的C程序。

labview程序框图:

 


 

Arduino串行通信的C程序:这个程序和食人鱼与按钮互动的程序不同,仔细看有啥不同。

 

int ledpin=9;//声明食人鱼LED的数字接口编号
int val;
int led_state;
void setup()
{
  pinMode(ledpin,OUTPUT);//设置食人鱼为输出
  digitalWrite(ledpin,HIGH);//初始化是食人鱼熄灭
  Serial.begin(9600);//设置串行通信的波特率
}
void loop()
{
  val=Serial.read();//读取labview下达的命令
  if(val=='a')//如果labview发送字符'a',则点亮食人鱼
  {
    digitalWrite(ledpin,LOW);//食人鱼点亮
    led_state=1;   
  }
  if(val=='b')//如果labview发送字符'b',则熄灭食人鱼
  {
    digitalWrite(ledpin,HIGH);//食人鱼熄灭
    led_state=0;    
  }
  delay(100);
  if(led_state==1)//把食人鱼LED亮或者灭的状态上传给Labview
  {Serial.print('a');}
  else
  { Serial.print('b');}
}

 

labview与Arduino食人鱼互动的程序打包下载:开关食人鱼(用Labview控制).rar

  • 上一篇文章: 用Arduino控制器变个采集卡,用Labview软件变个仪表盘,我也组建一台虚拟仪器

  • 下一篇文章: 我的第一个Labview和Arduino控制器的互动设计
  •    
    [注:标题搜索比内容搜索快]
    发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • 轨道钢承重计算公式及应用[109]

  • 【选型】如何为变频器选取阻值…[86]

  • AIS2023参展厂商名录[345]

  • AGV综合选型[170]

  • APIE 2023第4届亚太国际智能装…[138]

  •  
     最新5篇推荐文章
  • 外媒:正在唤醒中国的习近平[305]

  • 中国反伪科学运动背后的CIA黑手…[494]

  • [转载]袁隆平真言:中国最大的…[668]

  • 台专家:当年我们造IDF时 大陆…[572]

  • 旅日华人:中国严重误判日本民…[577]

  •  
     相 关 文 章
  • 我的第一个Labview和Arduino控…[35]

  • 用Arduino控制器变个采集卡,用…[61]


  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | 
    版权所有 Copyright© 2003 晨光科技        站长:璀璨星辰        页面执行时间:978.52毫秒
    Powered by:MyPower Ver3.5