首页
社区
课程
招聘
[原创]发一个用3个传感器检测火车是上行还是下行的代码
发表于: 2013-7-8 17:35 7540

[原创]发一个用3个传感器检测火车是上行还是下行的代码

2013-7-8 17:35
7540

本人原创程序,目前已在铁路部门使用...
3个轮子以上才确定为火车经过(一列火车最少为6个轮子)
以下为C代码,适用于atmega系列单片机
String text="";
long begin=millis();
long end=millis();
int length=0;
     
do{
        Serial.println("Wei xiu che");
        int CL = analogRead(A0);
        if (CL>10)
        {
      do{
                        CL = analogRead(A0);
                        text =text+char('1') ;
       } while(CL>1000);
      
      do{
                        CL = analogRead(A0);
                        end=millis();
                        if((end-begin)/1000>30)
                        {
                                text="";
                                begin=end;
                                break;
                        }
       }while(CL<1000);
     
      do{ CL = analogRead(A0);
       text =text+char('2') ;
      
      end=millis();
      if((end-begin)/1000>30)
          {
                   text="";
           begin=end;
           break;
          }
       }while(CL>1000);
   }
   } while(text.length()<2);

   text="";

do{
  Serial.print("Fang Xiang:");
  int V1 = analogRead(A0);
  int V2 = analogRead(A1);
  int V3 = analogRead(A2);
  if (V1>10)  
      {int V4 =0;
      do{
          V4 = analogRead(A0);
          }while(V4>10);
       text =text+char('A') ;}
  if (V2>10)
      {int V5 =0;
      do{
          V5 = analogRead(A1);
          }while(V5>10);
       text =text+char('B') ;}
  if (V3>10)
       {int V6 =0;
      do{
          V6 = analogRead(A2);
          }while(V6>10);
       text =text+char('C') ;}
                end=millis();
                Serial.println(text);
        if((end-begin)/1000>30)
        {
                text="";
                begin=end;
                break;
        }

}while(text.length()<3);

if (text.length()>=3)
{  Serial.println("Fa Ming Ling");
    delay(1000);
   if(text=="ABC"||text=="BCA"||text=="CAB")
   { Serial.println("85,1,24,0,0,1,1,112");
     delay(3000);   
    text="";}
   if(text=="CBA"|| text=="BAC"||text=="ACB")
   { Serial.println("85,1,24,0,0,1,9,120");
       delay(3000);        
     text="";  
    }
     text="";  
    }


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 5
支持
分享
最新回复 (11)
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢分享,不过还缺好多代码和单片机管脚使用定义吧
2013-7-8 18:29
0
雪    币: 1904
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这是不是泄漏国家机密啊!
2013-7-8 19:13
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
4
写下注释,讲下原理吧:)这个硬件玩的有点大.
2013-7-8 23:33
0
雪    币: 105
活跃值: (38)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
会不会出现火车互相碰撞的局面。。
2013-7-9 10:37
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那是天气原因
2013-7-9 10:44
0
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哈哈
2013-7-9 10:45
0
雪    币: 199
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
怎么感觉有点吐槽的感觉,print 都是拼音?
2013-7-10 16:59
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不知所云.发这么一段无头无尾的代码有什么意义?
我复制一段,发到别的论坛上,说这是判断灰机起飞和降落的可不可以?
2013-7-10 17:23
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
10
我去,单片机程序也能上精华了~
2013-7-11 10:07
0
雪    币: 123
活跃值: (95)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
这个应该是不完整的Arduino代码吧?对吗?
2013-7-11 15:06
0
雪    币: 190
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
arduino允许铁路上使用么?
2013-8-15 16:18
0
游客
登录 | 注册 方可回帖
返回
//