四层电梯 加入查看是否死机 到最顶或最下面不会在向上或向下

 

代码如下

 

//三层楼电梯代码2017-6-13-8:8  双传感 已正常运行“可在运行是随机改变楼层”
unsigned int t_t=0;
int l1=13;//闪烁的灯的脚 ,看是否有死机
int s = 12; //上升电机
int x = 11; //下降电机

int ting = 24; //急停
int a4 = 26;
int a3 = 28; //按钮3楼
int a2 = 30;
int a1 = 32;



int c4=52;
int c3_s = 50;
int c3_x = 46; //传感器3楼到位
int c2_s = 48;
int c2_x = 44;
int c1=42;

bool c1_2=false;//1-2层
bool c2_3=false;//2-3层
bool c3_4=false;//3-4层

bool x_sb=false;
bool x_xb=false;//向下标志位

bool c4b = false;
bool c3b = false;
bool c3_sb = false;
bool c3_xb = false;
bool c2_sb = false;
bool c2_xb = false;
bool c2b = false;
bool c1b = false;

bool a4b = false;
bool a3b = false;
bool a2b = false;
bool a1b = false;
bool l1b = false;

void setup() {
  Serial.begin(115200);
  Serial.println("QQ496631085  TEL:17051329108");
  Serial.println("4ceng dianti 2017-6-22");
  pinMode(c4, INPUT_PULLUP);
   pinMode(c3_s, INPUT_PULLUP);
  pinMode(c3_x, INPUT_PULLUP);
  pinMode(c2_s, INPUT_PULLUP);
  pinMode(c2_x, INPUT_PULLUP);
  pinMode(c1, INPUT_PULLUP);
  
  pinMode(a1, INPUT_PULLUP);
  pinMode(a2, INPUT_PULLUP);
  pinMode(a3, INPUT_PULLUP);
  pinMode(a4, INPUT_PULLUP);
  pinMode(ting, INPUT_PULLUP);
  pinMode(x, OUTPUT);
  pinMode(s, OUTPUT);
  pinMode(l1, OUTPUT);  
  digitalWrite(s, HIGH);
  digitalWrite(x, HIGH);
}

void loop() 
{
  if(t_t!=millis()/1000)
    {t_t=millis()/1000;
    l1b=~l1b;
    if(l1b==true)
      {digitalWrite(l1,LOW);
        }
     else digitalWrite(l1,HIGH);
     
      }
  
  pda();
  pdc();
  Serial.print("  an1:");
  Serial.print(a1b);
  Serial.print("  2:");
  Serial.print(a2b);
  Serial.print("  3:");
  Serial.print(a3b);
   Serial.print("  4:");
  Serial.println(a4b);
    Serial.print("  ceng1:");
  Serial.print(c1b);
   Serial.print("  c1_2:");
  Serial.print(c1_2);
     Serial.print("  2:");
  Serial.print(c2b);
    Serial.print("  c2_3:");
  Serial.print(c2_3);
     Serial.print("  3:");
  Serial.print(c3b);
     Serial.print("  c3_4:");
  Serial.print(c3_4);
     Serial.print("  4:");
  Serial.print(c4b);
     Serial.print("  x_sb:");
  Serial.print(x_sb);
     Serial.print("  x_xb:");
  Serial.print(x_xb);
  if (digitalRead(a1)==LOW&&c1b==false) //3楼和2楼  直接去1楼
  {
    if (c4b == true)
    {
       x_x("A1-4");
       Serial.print("111114444");
     //4层就是3-4从层之间
     c3_4=true;
    }
    if (c3_4==true)x_x("A1-3-4");
    if (c3b == true)
    {
       x_x("A1 3");
     //没到2层就是2-3从层之间
     c2_3=true;
    }
    if(c2_3==true)x_x("A1 2-3");
     if (c2b == true)
    {
       x_x("A1-C2");
     //2层就是1-2从层之间
     c1_2=true;
    }
    else if (c3b == false || c2b == false|| c4b == false)
    {
      if (c1b == true)
      { dao1();
      }
      else if(c1b ==false)
            {x_x("A1-");
              }
      }
      
  }
  else if(a1b==true&&c1b==true) 
        dao1();
 //_______________________________
 if (digitalRead(a2)==LOW&&c2b==false) //  去2楼
  {
    if (c1b == true)
    {
      x_s("A2-C1");c1_2=true;
      Serial.println("c1_2  c1_2   c1_2");
    }
    if (c1_2==true)  x_s("A2 C1-2");
    if (c3b == true || c2_3==true)
    {
      x_x("A2-C2-3");
      c2_3=true;
      }
    if (c4b == true || c3_4==true)
    {
      x_x("A2-C4-C3-4");c3_4=true;
      ///>>>>>>>>>>>>
      }
      
  }
  else if(a2b==true&&c2b==true) 
        dao2();       
//______________________________________
if (a3b==true&&c3b==false) //  去3楼
  {
    if (c1b == true)
    {
      x_s("c1");
      c1_2=true;
    }
    if(c1_2 ==true )x_s("c1-2");
    if(c2b == true)
    {
      x_s("c2-3");
      c2_3=true;
    }
    
    if(c2_3 ==true )x_s("c2_3");
    if(c3_4 ==true )x_x("cx_4");
      if(c4b == true)
    {
      x_x("c4");delay(1000);
      c3_4=true;
    }
    else if (c1b == false || c2b == false|| c4b == false)
    {
      if (c3b == true)
      { dao3();
      }
      else if(c3b ==false)
            {x_s("A3-C3");
              }
      }
  }
  else if(c3b==true&&a3b==true) 
        dao3();
  //______________________________4
  if (digitalRead(a4)==LOW&&c4b==false) //  去4楼
  {
    //Serial.println("anjianpanduanzhixing.....");
    if (c1b == true)
    {
      x_s("A4-1");
      c1_2=true;
    }
    if(c2b == true)
    {
      x_s("A4-2");
      c2_3=true;
    }
      if(c3b == true)
    {
      x_s("A4-3");
      c3_4=true;
    }
    else if (c1b == false || c2b == false|| c3b == false)
    {
      if (c4b == true)
      { dao4();
      }
      else if(c4b ==false)
            {x_s("A4- else");
           
              }
      }
  }
  else if(c4b==true&&a4b==true) 
        dao4();      
}

void dao1(){tingzhi("DAO1");a1b=false;}
void dao2(){tingzhi("DAO2");a2b=false;}
void dao3(){tingzhi("DAO3");a3b=false;}
void dao4(){tingzhi("DAO4");a4b=false;}

//判断按键是否按下
void pda()
{
  if(digitalRead(ting) == LOW)
  tingzhi("JingJI");

if (digitalRead(a4) == LOW&&digitalRead(a2) != LOW&&digitalRead(a1) != LOW&&digitalRead(a3) != LOW)
  {//防止多个按键按下
     
       a4b = true;a3b=false;a2b=false;a1b=false;
  }
  
  if (digitalRead(a3) == LOW&&digitalRead(a2) != LOW&&digitalRead(a1) != LOW&&digitalRead(a4) != LOW)
  {//防止多个按键按下
   
       a3b = true;a4b=false;a2b=false;a1b=false;
  }

  if (digitalRead(a2) == LOW&&digitalRead(a3) != LOW&&digitalRead(a1) != LOW&&digitalRead(a4) != LOW)
  {//防止多个按键按下
  
      a2b = true;a1b=false;a3b=false;a4b=false;
  
  }
  //---------------------------
    if (digitalRead(a1) == LOW&&digitalRead(a2) != LOW&&digitalRead(a3) != LOW&&digitalRead(a4) != LOW)
  {//防止多个按键按下
    Serial.println("a1anxia");
     
      Serial.println("a1WEIZHEN");
       a1b = true;a2b=false;a3b=false;a4b=false;

  }

}

//判断在那层
void pdc()
{
  if (digitalRead(c4) == LOW)
  {
    c4b = true;
    c2_3=false;
    c1_2=false;
    c3_4=false;
    digitalWrite(s, HIGH);
    //停止向上
  }
  else c4b = false; 
  //___________________________3__
  if (digitalRead(c3_x) == LOW)
  {
    c3_xb = true;
  }
  else c3_xb=false;
  if (digitalRead(c3_s) == LOW)
  {
    c3_sb = true;
  }
  else c3_sb=false;
  if(c3_sb==true&&c3_xb==true)
    {c3b = true;
    c2_3=false;
    c1_2=false;
    c3_4=false;
    }
  else c3b = false;
//________________2
  if (digitalRead(c2_x) == LOW)
  {
   c2_xb=true;
  }
  else c2_xb=false;
  if(digitalRead(c2_s) == LOW)
  {
   c2_sb=true;
  }
  else c2_sb=false;
  if(c2_sb==true&&c2_xb==true)
    {c2b = true;
    c2_3=false;
    c1_2=false;
    c3_4=false;
    }
  else c2b = false;
 //________________2 
  if (digitalRead(c1) == LOW)
  {
    c1b = true;
    c2_3=false;
    c1_2=false;
    digitalWrite(x, HIGH);//停止往下
  }
  else c1b = false;

}

//电机相上下运动停止
void x_s(String val) {
  Serial.print(val);
  if(x_xb==false){
  digitalWrite(s, LOW);x_sb=true;
  }
  
}
void x_x(String val) {
  Serial.print(val);
  if(x_sb==false){
  digitalWrite(x, LOW);x_xb=true;
  }
}
void t_s() {
  digitalWrite(s, HIGH);
}
void t_x() {
  digitalWrite(x, HIGH);
}
void tingzhi(String val) {
  Serial.print(val);
  digitalWrite(x, HIGH);
  digitalWrite(s, HIGH);
  a1b=false;
  a2b=false;
  a3b=false;
  a4b=false;
  x_xb=false;
  x_sb=false;
  Serial.print("------------------------------");
}

  

 

posted @ 2017-06-23 13:21  xiaohe520  阅读(21)  评论(0编辑  收藏  举报