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;
}

浙公网安备 33010602011771号