四层电梯 加入查看是否死机 到最顶或最下面不会在向上或向下
代码如下
//三层楼电梯代码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("------------------------------");
}

浙公网安备 33010602011771号