android 物理按键电平,通过ESP8226+android开发遥控灯---(四) GPIO2引脚输出低电平...

一直想直接通过ESP8266的输出引脚直接控制灯

查看资料可以得知我这个模块只有 三个引脚可以 分别是 GPIO0 GPIO2 GPIO16

其中GPIO0是用于下载用的,这里我就不打算用它来输出了(虽然实际上是可以的)

首先我遇到的第一个困难是关于处理TCP数据的问题,因为我要判断收到的数据来决定引脚状态,这里就涉及到了C语言类型的问题。传过来的数据以字符串的类型通过参数p传入,我的判断是如果是1就低电平,是0就高电平,那么显然不能直接用p==1,于是我就打算用强制转换为string,但是c语言又没有自带string这个类型,p的类型就是字符数组,于是我直接用unsigned

char强制转换。

其次问题是如何设置gpio2输出低电平,首先查看API文档,API文档正好有函数设置低电平,gpio_set_xxxx函数,就是用来设置的,于是我直接用,然后多次尝试并没有让GPIO2变低(通过电压表可以测量)。这时我就有点懵逼了,明明和API做的一模一样,就是不行,于是我又在乐鑫官网搜索GPIO,正好有一篇文档,正好把文档拿来看,文档提到example中有示例,我又去看示例,发现示例的方法和我的大同小异,他是先PIN_FUNC_SELECT这个函数,然后再GPIO_OUTPUT_SET(注意和前面那个小写的函数不是同一个函数),我又去改程序,结果,直接乱码显示经。过一系列百度,修改一个参数后没有乱码了,但是GPIO2也没有变低。此时我的懵逼状态

2了,我仔细的观察到,文档上面的示例是GPIO12引脚,且文档专门说明了GPIO12的某个参数在不同的GPIO需要变换,但是又没直接给出变化值,我开始怀疑是不是GPIO2需要专门的方法,于是我又百度搜索GPI02的变低方法,又搜到一篇正好就是用GPIO2的文档,这篇文档还是很优秀的,他的示例和官网一模一样,除了把12改成2,。我不信,直接复制这篇文档的内容,粘贴到我的代码中,这下不可能错了撒。然而

MDZZ,还是无法输出低电平。这个时候都1.30了,哎,我抱着试一试的心态,在乐鑫社区搜索了下GPIO2,哈哈,正好有个和我一样的问题,果然就是刚刚提到的那个参数的问题,需要变换,但是又需要看另外一个文档,我刚刚懒得去下,所以就没看,没想到啊。。。一时的懒浪费了更多的时间,不过最后很幸运的还是找到了答案,还是要感谢god,做一个乐观的人嘛。

最后成功输出了低电平。

贴下代码:

a4c26d1e5885305701be709a3d33442f.png

最后。总结一下,

0.esp8266控制gpio输出时,必须要打开一下gpio功能,如上面,打开的时候需要相关gpio引脚的寄存器作为参数,官方只提到了gpio12的寄存器,其他的需要自己去查技术文档。

1: C语言没有内置string类型,printf输出的%s实质是字符数组

2:在搜索问题时,应该首先想到的是广度,而不应该是深度,就是说不应该在一个地方多次搜索,而应该考虑换地方搜索,比如百度

乐鑫官网 社区 贴吧 …………,看来搜索也是一门艺术啊,下次要专门总结一下搜索了。

3.在看文档时,如果引用了另外一篇文档,最好还是看看,万一会有意想不到的收获呢

4.(来自于百度的文档)由于ESP8226启动需要GPIO2高电平,如果把LED一头接GPIO2,一头接GND,那么是无法启动的,需注意。

另外:我的博文主要是对自己看的,思路有点乱,还请大家见谅,如果有什么问题,欢迎在下面讨论。我的东西都不是自己的,我也是从网上到处学习的,很乐意和大家分享,

最后统一的时候又出现了问题,tcp传入的数据类型是char,我使用p==char(1)来判断,但是不论我怎么实验,把1赋给int,再char(),或者是直接char

off=1,都无法成功,搞了一个小时,终于明白了,给char赋值必须要使用单引号!!

就是说char类型在处理数字的时候必须格外小心,因为char本身就可以表示数字,也可以表示数字字符,char

a=1是合法的,表示ASCII码为十进制1的那个字符,而char a='1'才是表示数字字符!!

至此,下位机esp8266的代码部分就到此了,下面开始进行上位机的开发了,由于最终代码有点长,主要是copy官网的demo,但是自己做了些修改,如果有需要的可以找我要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值