arduino 2560电梯控制系统4层 可以随机改变状态 能识别在某一层
四层暂时没什么BUG:
//三层楼电梯代码2017-6-13-8:8 双传感 已正常运行“可在运行是随机改变楼层” int s = 37; //上升电机 int x = 39; //下降电机 int a4 = 22; int a3 = 24; //按钮3楼 int a2 = 26; int a1 = 28; int ting = 6; //急停 int c4=42; int c3_s = 44; int c3_x = 46; //传感器3楼到位 int c2_s = 48; int c2_x = 50; int c1=52; 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; void setup() { Serial.begin(115200); 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); digitalWrite(s, HIGH); digitalWrite(x, HIGH); } void loop() { pda(); pdc(); Serial.print(" 1:"); Serial.print(a1b); Serial.print(" 2:"); Serial.print(a2b); Serial.print(" 3:"); Serial.print(a3b); Serial.print(" 4:"); Serial.println(a4b); Serial.print(" 1:"); Serial.print(c1b); Serial.print(" 2:"); Serial.print(c2b); Serial.print(" 3:"); Serial.print(c3b); Serial.print(" 4:"); Serial.print(c4b); if (a1b == true&&c1b==false) //3楼和2楼 直接去1楼 { if (c4b == true) { x_x(); //4层就是3-4从层之间 c3_4=true; } if (c3b == true) { x_x(); //没到2层就是2-3从层之间 c2_3=true; } if (c2b == true) { x_x(); //2层就是1-2从层之间 c1_2=true; } else if (c3b == false || c2b == false|| c4b == false) { if (c1b == true) { dao1(); } else if(c1b ==false) {x_x(); } } } else if(a1b==true&&c1b==true) dao1(); //_______________________________ if (a2b == true&&c2b==false) // 去2楼 { if (c1b == true || c1_2==true) { x_s();c1_2==true; } if (c3b == true || c2_3==true) { x_x(); c2_3==true; } if (c4b == true || c3_4==true) { x_x();c3_4==true; ///>>>>>>>>>>>> } } else if(a2b==true&&c2b==true) dao2(); //______________________________________ if (a3b == true&&c3b==false) // 去3楼 { if (c1b == true) { x_s(); c1_2=true; } if(c2b == true) { x_s(); c2_3=true; } if(c4b == true) { x_x(); c3_4=true; } else if (c1b == false || c2b == false|| c4b == false) { if (c3b == true) { dao3(); } else if(c3b ==false) {x_s(); } } } else if(a3b==true&&c3b==true) dao3(); //______________________________4 if (a4b == true&&c4b==false) // 去4楼 { if (c1b == true) { x_s(); c1_2=true; } if(c2b == true) { x_s(); c2_3=true; } if(c3b == true) { x_s(); c3_4=true; } else if (c1b == false || c2b == false|| c3b == false) { if (c4b == true) { dao4(); } else if(c4b ==false) {x_s(); } } } else if(a4b==true&&c4b==true) dao4(); } void dao1(){tingzhi();a1b=false;} void dao2(){tingzhi();a2b=false;} void dao3(){tingzhi();a3b=false;} void dao4(){tingzhi();a4b=false;} //判断按键是否按下 void pda() { if(digitalRead(ting) == LOW) tingzhi(); if (digitalRead(a4) == LOW&&digitalRead(a2) != LOW&&digitalRead(a1) != LOW&&digitalRead(a3) != LOW) {//防止多个按键按下 tingzhi(); a4b = true;a3b=false;a2b=false;a1b=false; } if (digitalRead(a3) == LOW&&digitalRead(a2) != LOW&&digitalRead(a1) != LOW&&digitalRead(a4) != LOW) {//防止多个按键按下 tingzhi(); a3b = true;a4b=false;a2b=false;a1b=false; } if (digitalRead(a2) == LOW&&digitalRead(a3) != LOW&&digitalRead(a1) != LOW&&digitalRead(a4) != LOW) {//防止多个按键按下 tingzhi(); a2b = true;a1b=false;a3b=false;a4b=false; } //--------------------------- if (digitalRead(a1) == LOW&&digitalRead(a2) != LOW&&digitalRead(a3) != LOW&&digitalRead(a4) != LOW) {//防止多个按键按下 Serial.println("a1anxia"); tingzhi(); 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; } 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; } else c1b = false; } //电机相上下运动停止 void x_s() { if(x_xb==false){ digitalWrite(s, LOW);x_sb=true; } } void x_x() { if(x_sb==false){ digitalWrite(x, LOW);x_xb=true; } } void t_s() { digitalWrite(s, HIGH); } void t_x() { digitalWrite(x, HIGH); } void tingzhi() { digitalWrite(x, HIGH); digitalWrite(s, HIGH); a1b=false; a2b=false; a3b=false; a4b=false; x_xb=false; x_sb=false; }