手机点亮LED灯
本帖最后由 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通信需要的参数就好
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int flag=-1;
int val;
#define MAXCHAR 81
char aa;
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=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;
}
}
如果是用蓝牙串口模块的话就比较简单方便,直接发送字符或者16进制数,Arduino接收到之后直接执行处理函数就可以了 jackten 发表于 2016-10-19 17:57
如果是用蓝牙串口模块的话就比较简单方便,直接发送字符或者16进制数,Arduino接收到之后直接执行处理函数 ...
是的。主要是想试试WIFI模块,这个通信更实用。以后可能会再做出IOS的手机程序。 jia14080015 发表于 2016-10-19 18:25
是的。主要是想试试WIFI模块,这个通信更实用。以后可能会再做出IOS的手机程序。 ...
你是想用wifi串口吗?使用一样 jackten 发表于 2016-10-19 17:57
如果是用蓝牙串口模块的话就比较简单方便,直接发送字符或者16进制数,Arduino接收到之后直接执行处理函数 ...
请教您,我是小菜鸟。你说的“蓝牙串口模块的话就比较简单方便,直接发送字符或者16进制数,Arduino接收到之后直接执行处理函数就可以了”,有没有这方面的例程给我学习一下,谢谢! 可以尝试一下Esp8266的Arduino IDE开发方式哦 有没有库函数文件 发一下 谢谢 wifi这么难啊 新手, 程序看着都有点小难
页:
[1]