n带弹头 发表于 2020-5-13 13:12:45

用arduino NANO 做的485通讯控制小灯的点亮

但10引脚不能正常控制小灯的点亮,求大神们指导下!!

int c=0;
int var=0;
int a=0;
uint8_t buffer="a1";
String comdata="";
String str;
String tcaspass;
String tcasfail;
String topant;
String botant;
String hdg;
String ralog;
String tadisp;
String radisp;
String radalt;
String xpdrbus;
String att;

int testPin = 13; // 按键的管脚定义

void setup()
{
Serial.begin(9600,SERIAL_8O1);   

pinMode(testPin, INPUT_PULLUP); //设置按键管脚上拉输入模式
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);

}


void Recive485()
{
    while (Serial.available() > 0)
    {
      comdata += char(Serial.read());
      delay(2);
    }
   if (comdata.length() > 0)
    {
// Serial.println(comdata);
       str=comdata;
       comdata = "";   
    }
}

void Send()
{
if(digitalRead(testPin) == HIGH)
{
buffer=0x41;
buffer=0x31;
Serial.write(buffer,2);
Serial.println(" ");
delay(100);
}
else
{
digitalWrite(10,LOW);
}
}

void choose()
{
if (digitalRead(testPin) == HIGH)      //有按键按下
{
    delay(20);                        //延时去抖动
    if (digitalRead(testPin) == HIGH)      //有按键按下
    {
         digitalWrite(2,HIGH);
         digitalWrite(3,HIGH);
         digitalWrite(4,HIGH);
         digitalWrite(5,HIGH);
         digitalWrite(6,HIGH);
         digitalWrite(7,HIGH);
         digitalWrite(8,HIGH);
         digitalWrite(9,HIGH);
         digitalWrite(10,HIGH);
         digitalWrite(11,HIGH);
         digitalWrite(12,HIGH);
         delay(3000);
         digitalWrite(2,LOW);
         digitalWrite(3,LOW);
         digitalWrite(4,LOW);
         digitalWrite(5,LOW);
         digitalWrite(6,LOW);
         digitalWrite(7,LOW);
         digitalWrite(8,LOW);
         digitalWrite(9,LOW);
         digitalWrite(10,LOW);
         digitalWrite(11,LOW);
         digitalWrite(12,LOW);
          if(str.length()==47)
{
   tcaspass=str.substring(0,2);
   if(tcaspass=="A1"){digitalWrite(2,LOW);}
   if(tcaspass=="A2"){digitalWrite(2,HIGH);}

   tcasfail=str.substring(2,4);
   if(tcasfail=="B1"){digitalWrite(4,LOW);}
   if(tcasfail=="B2"){digitalWrite(4,HIGH);}

   topant=str.substring(4,6);
   if(topant=="C1"){digitalWrite(6,LOW);}
   if(topant=="C2"){digitalWrite(6,HIGH);}

   botant=str.substring(6,8);
   if(botant=="D1"){digitalWrite(8,LOW);}
   if(botant=="D2"){digitalWrite(8,HIGH);}

   hdg=str.substring(8,10);
   if(hdg=="E1"){digitalWrite(10,LOW);}
   if(hdg=="E2"){digitalWrite(10,HIGH);}


   ralog=str.substring(10,12);
   if(ralog=="F1"){digitalWrite(12,LOW);}
   if(ralog=="F2"){digitalWrite(12,HIGH);}

   tadisp=str.substring(12,14);
   if(tadisp=="G1"){digitalWrite(3,LOW);}
   if(tadisp=="G2"){digitalWrite(3,HIGH);}

   radisp=str.substring(14,16);
   if(radisp=="H1"){digitalWrite(5,LOW);}
   if(radisp=="H2"){digitalWrite(5,HIGH);}

   radalt=str.substring(16,18);
   if(radalt=="I1"){digitalWrite(7,LOW);}
   if(radalt=="I2"){digitalWrite(7,HIGH);}
   
   xpdrbus=str.substring(18,20);
   if(xpdrbus=="J1"){digitalWrite(9,LOW);}
   if(xpdrbus=="J2"){digitalWrite(9,HIGH);}
   
   att=str.substring(20,22);
   if(att=="K1"){digitalWrite(11,LOW);}
   if(att=="K2"){digitalWrite(11,HIGH);}

}
else
{
    digitalWrite(2,HIGH);
    }
    }
}
}

void loop()
{
   Recive485();
   Send();
   choose();
}
页: [1]
查看完整版本: 用arduino NANO 做的485通讯控制小灯的点亮