|
要求实现利用手机发送指令来控制小车运动,用的无线模块是ESP8266,将模块作为服务器,然后在手机上安装了一个网络调试助手连接,并发送指令。但是发送的指令只有“前进”是正确的,发送其他都没有反应,而且手机的TCP连接也经常显示断开。自己这方面不太懂,也找不到相应的资料,不知道什么原因,现在把代码贴出来,希望各位大神能给点帮助,我先在这里谢过了。
完整代码如下:
#include
SoftwareSerial WIFISerial(10, 11);// RX, TX
int IN1 = 6;
int IN2 = 7;
int IN3 = 8;
int IN4 = 9;
int ENA = 3;
int ENB = 5;
int lkf;
void setup()
{
int i;
for (i=6;i<=9;i++)
pinMode(i,OUTPUT);
for (i=6;i<=9;i++)
digitalWrite(i,OUTPUT);
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
Serial.begin(9600);
lkf=0;
pinMode(13, OUTPUT);
WIFISerial.begin(115200);
WIFISerial.println("AT+RST");
delay(2000);
WIFISerial.println("AT+CWMODE=2"); //ap+sta mode
delay(2000);
WIFISerial.println("AT+RST");
delay(2000);
WIFISerial.println("AT+CWSAP="SLH","11111111",11,0");
delay(3000);
WIFISerial.println("AT+CIPMUX=1");
delay(2000);
WIFISerial.println("AT+CIPSERVER=1,8080");
delay(2000);
}
void loop()
{
if (WIFISerial.available())
{
lkf = WIFISerial.read();
switch(lkf)
{
case \'A\': //qianjin
Move();
lkf=0;
break;
case \'B\': //houtui
Back();
lkf=0;
break;
case \'C\': //zuozhuan
TurnLeft();
lkf=0;
break;
case \'D\': //youzhuan
TurnRight();
lkf=0;
break;
case \'E\':
stopMotor(true);
delay(1000);
stopMotor(false);
lkf=0;
break;
}
}
lkf=0;
}
void Move()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void Back()
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void TurnLeft()//左转
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void TurnRight()//右转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
}
void stopMotor(boolean r)//电机停转
{
if (r)
{
analogWrite(ENA,0);
analogWrite(ENB,0);
}
else
{
analogWrite(ENA,255);
analogWrite(ENB,255);
}
}
|
|