看到街边停车场的自动栏杆随轿车的进出自动升降,于是前去观察,一上一下的,蛮有意思,想想,是否可以做个原型产品娱乐下,所以我就制作了这个Arduino与LEGO结合下的自动栏杆。

    这个作品的工作过程是:当红外传感器(图中黄色圆柱状器件)检测到小车到达栏杆前方,栏杆自动升起打开,并保持打开状态一小会,小车通过栏杆处后,栏杆会放下关闭。看看视频:
    判断轿车是否到达栏杆跟前,依靠下图所示红外测距开关传感器,这个传感器的三根线,我把它们接到DFRobot公司的Arduino Xbee传感器扩展板V5 的数字端口5上,黄线接在端口的D引脚,红线接在端口的VCC引脚,绿线接在端口的GND引脚。这个红外传感器的后端有个小旋钮,可以用“一字起”工具旋转,以调节测量距离,我通过调节,把测量距离设为15厘米左右。如果在15厘米内检测到障碍物,则发低电平,否则为高电平。
    
    Arduino Xbee传感器扩展板V5如图:
注意:由于“单三角括号”里的内容,博客里显示不出来,所以我把头文件声明命令“被迫”进行了修改,以便在博客里看到头文件,例如改成"#include 《Servo.h>"。 
 
完成作品工作过程的Arduino程序:(有详细注释)
/*当红外传感器检测到小车到达栏杆前方,
栏杆自动升起打开,并保持打开状态一小会,
小车通过栏杆处后,栏杆放下关闭*/
#include 《Servo.h> //声明伺服马达函数库
Servo myservo;  // 定义伺服马达对象
int IR=5;   //红外传感器连在数字端口5
int IR_State=0;// 红外传感器状态
int flag=0; //栏杆打开或者关闭的标志
//初始化
void setup()
{
  
  pinMode(IR,INPUT); //设置与红外传感器相连的数字端口5为输入端口
   myservo.attach(9);  //初始化9号引脚来控制马达                     
}
//循环执行主程序中的指令
void loop()
{
  //如果被测物体在设定距离内,红外传感器状态为低电平
  IR_State=digitalRead(IR); //读取红外传感器的状态
  //如果如果被测物体在设定距离内,并且栏杆处于关闭状态
  if(IR_State==LOW && flag==0)
  {
    myservo.write(0);     // 启动伺服电机正转
    delay(6000);             // 等待6s,让栏杆打开到位
    flag=1; //标志栏杆处于打开状态
     myservo.write(93);  //伺服电机停止
     delay(4000);  //让栏杆保持打开状态4s
  }
  //如果如果被测物体在设定距离外,并且栏杆处于打开状态
  if(IR_State==HIGH && flag==1)
  {
    myservo.write(180);     // 启动伺服电机反转
    delay(5000);             // 等待5s,让栏杆关闭到位
    flag=0; //标志栏杆处于关闭状态
    myservo.write(93);  // 伺服电机停止  
  }    
}
 
Arduino程序请下载:handrail.zip
 
    前段时间我写了两篇介绍新车间出品的免费Arduino图形化编程软件ArduBlock,它们是:

新车间Arduino图形化编程软件ArduBlock的介绍(上)http://www.eefocus.com/zhang700309/blog/12-02/237994_76dea.html新车间《Arduino图形化编程软件ArduBlock的介绍(下)http://www.eefocus.com/zhang700309/blog/12-02/238093_5e52f.html。目前新车间的这个软件已经有中文版,中文版下载网址:https://github.com/downloads/taweili/ardublock/ardublock-all.jar

。软件安装方法见《新车间Arduino图形化编程软件ArduBlock的介绍(上)》一文。

    我使用了一段时间ArduBlock软件,感觉蛮好用,直观形象,编程工作仿佛变成了拼图游戏,一个个模块按照您的逻辑不断“咔咔”地拼接在一起,如果拼接能严丝合缝,就不用担心出现语法错误,但编程逻辑错误,就看您是否经过了适当的编程训练了。

   现在我用中文版ArduBlock软件编写图形化的程序,注意看,模块标识和程序注释都是简体中文啊。(点击图片,放大看)

 
   新车间是一家位于上海长宁区安化路76号的创客空间,网址:http://xinchejian.com/?lang=zh,看视频,了解新车间的情况。
    自动栏杆作品的机械部分是用乐高积木搭建。对于Arduino控制器与乐高电池盒如何连接,舵机与乐高结构件如何连接,可以看《把Arduino与乐高结合起来做创意作品》一文的介绍,网址:http://www.eefocus.com/zhang700309/blog/12-01/237459_6b7a6.html。至于自动栏杆主体部分的搭建,可通过下面3张图片有所了解。
 
 
 
 
    乐高机械作品的搭建是否成功主要看传动链的设计是否合理可行,从舵机旋转到栏杆升降,这条传动链里一共有三个机构,以动力的传动方向来看,它们分别为皮带轮机构、蜗轮蜗杆机构和四杆机构。所以一个小小的自动栏杆原型作品,不仅要选择电子器件,编写和调试程序,还要完成机构的设计与制作。