找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 4833|回复: 0

给儿子的轨道车做了个自动闸机

  [复制链接]
发表于 2014-5-25 21:25:13 | 显示全部楼层 |阅读模式
本帖最后由 prcthinker 于 2014-5-26 08:33 编辑


接口1连触碰传感器,控制拦车杆关闭位置
3连颜色传感器,通过不同颜色车时发出不同声音,因灵敏度关系,不太理想
4连超声波传感器,感应是否有车通过
A连接抬杆马达
下是程序
//by prcthinker
//2014-5-22
int flag,t,n,i;
task open()    //抬杆
{
while(true)
{
  if (SensorUS(IN_4)<15&&Sensor(IN_1)==1)
  {
   RotateMotor(OUT_A,50,-90);  //抬90度
  }
  
//根据不同颜色发出不同声音
   if (Sensor(IN_3)==2)
     PlayToneEx(262,400,3,FALSE);
   else if (Sensor(IN_3)==3)
        PlayToneEx(362,400,3,FALSE);
   else if (Sensor(IN_3)==4)
        PlayToneEx(462,400,3,FALSE);
   else if (Sensor(IN_3)==5)
        PlayToneEx(562,400,3,FALSE);
   else if (Sensor(IN_3)==6)
        PlayToneEx(662,400,3,FALSE);
}
}
task close()         //放杆
{
while(true)
{
  if (flag==1&&Sensor(IN_1)==0)
  {
  OnFwd(OUT_A,30);
  until(Sensor(IN_1)==1);
  Off(OUT_A);
  }
}
}
task wait()    //连续一段时间没车通过时才能放杆,主要是多节轨道车之间有空隙,防止误判
{
while(true)
{
   if (SensorUS(IN_4)>=15&&Sensor(IN_1)==0)
   {
      if(n>=t)
              flag=1;
      else
          n++;
    }
   else
   {
   flag=0;
   n=0;
   }
  Wait(100);
}
}
task main()
{
Precedes(open,close,wait);
flag=0;
t=20;
n=0;
//chushihua
SetSensor(IN_1,SENSOR_TOUCH);
//SetSensor(IN_2,SENSOR_TOUCH);
SetSensor(IN_3,SENSOR_COLORFULL);
SetSensor(IN_4,SENSOR_LOWSPEED);
if (Sensor(IN_1)==0)
{
  OnFwd(OUT_A,30);
  until(Sensor(IN_1)==1);
  Off(OUT_A);
}
}

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-12-22 11:21 , Processed in 0.119257 second(s), 19 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表