极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25947|回复: 1

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

[复制链接]
发表于 2020-5-13 13:12:45 | 显示全部楼层 |阅读模式
但10引脚不能正常控制小灯的点亮,求大神们指导下!!

int c=0;
int var=0;
int a=0;
uint8_t buffer[2]="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[1]=0x41;
  buffer[1]=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();
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 00:19 , Processed in 0.041221 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表