|
本帖最后由 jia14080015 于 2016-10-19 16:39 编辑
从网上购买了一个智能车,只是让组装好,载入他的程序!
发现里面的资料太乱,根本学不到什么知识。所以决定自己从头开始探索,并记录下来整个的过程!
会在每篇帖子的下面,罗列出遇到的问题,大家一起讨论,共同进步!
1 当前阶段目标
对软串口接收到的数据处理,对来自android手机命令进行判定,给出对应操作。
测试手机通过WIFI模块与开发板间信息的传递
2 设备
arduino uno开发板
ESP8266 WIFI模块
LED灯 两个
3 连接
ESP8266的连接在上篇帖子中
LED灯的阳极(长)分别接在数字3、13上
LED灯的阴极接地
4 arduino 程序
借鉴帖子 http://www.arduino.cn/thread-6436-1-1.html
在上一张的帖子中,已经完成了ESP8266参数的设定,这里只用设定好IP通信需要的参数就好
[mw_shl_code=c,true]#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int flag=-1;
int val;
#define MAXCHAR 81
char aa[MAXCHAR];
int j=0;
int g_timeout=0;
char AT_CIPMUX[]="AT+CIPMUX=1";
char AT_CIPSERVER[]="AT+CIPSERVER=1,8888";
char AT_CIPSTO[]="AT+CIPSTO=2800";
//从串口中读出出字符串,存入在resule[]中
int readSerial(char result[])
{
int i=0;
while(mySerial.available()>0)
{
char inChar=mySerial.read();
if(inChar=='\n')
{
result='\0';
mySerial.flush();
return 0;
}
if(inChar!='\r')
{
result=inChar;
i++;
}
}
}
//数据处理,比较aa[]中是否含有s[]
//从串口中读出数据存入了aa[]中
//s[]是aa[]子串时,返加1,否则返回0
int Hand(char *s)
{
delay(200);
clearBuff();
delay(300);
readSerial(aa);
if(strstr(aa,s)!=NULL)
{
g_timeout=0;
clearBuff();
return 1;
}
if(g_timeout>50)
{
g_timeout=0;
return 0;
}
g_timeout++;
return 0;
}
//清除aa[]
void clearBuff(void)
{
for(j=0;j<MAXCHAR;j++)
{
aa[j]=0x00;
}
j=0;
}
//设定ESP8266为AP模式,并指定端口
void setESP(void)
{
clearBuff();
mySerial.println(AT_CIPMUX);
delay(500);
while(Hand("OK")==0);
clearBuff();
mySerial.println(AT_CIPSERVER);
delay(500);
while(Hand("OK")==0);
clearBuff();
mySerial.println(AT_CIPSTO);
delay(500);
while(Hand("OK")==0);
}
int singal_processing(void)
{
clearBuff();
delay(500);
if(Hand("LEFT"))
return 1;
if(Hand("RIGH"))
return 2;
if(Hand("STOP"))
return 3;
}
void setup() {
// put your setup code here, to run once:
mySerial.begin(115200);
pinMode(13, OUTPUT);
pinMode(3, OUTPUT);
setESP();
}
void loop() {
// put your main code here, to run repeatedly:
flag=singal_processing();
switch (flag)
{
case 1: digitalWrite(13, HIGH); break;
case 2: digitalWrite(3, HIGH); break;
case 3: digitalWrite(3, LOW);
digitalWrite(13, LOW); break;
}
}[/mw_shl_code]
|
|