esp8266 nodemcu oled_esp8266通过mqtt进行游戏控制(中)

acf269a417cfa3d500c91b24dcfbc8ea.png

esp8266通过mqtt进行游戏控制(中)

前言

上篇文章讲到使用mqtt与NodeMCU通信:

trick:esp8266通过mqtt进行游戏控制(上)​zhuanlan.zhihu.com
49524031409687e9e586dd5fd2be554f.png

由于开始没有按键,我使用mqtt进行通信实现控制,后面按键到了,这时我就想按键和mqtt都能控制,有按键的时候直接用按键控制,没有按键的时候wifi控制,一举两得。我就开始着手编写按键与wifi同时控制的代码。

单独测试按键与mqtt

首先先分开测试按键与mqtt控制,使用一个变量进行单一方式控制:

绘制一个两帧的恐龙,程序让这两张图片交替显示,形成恐龙行走的动画,用按键或mqtt暂停或继续。

注:恐龙图片可以从cr4fun项目中下载,player1.pbm和player2.pbm:

OpensourceBooks/chrome_offline_game_on_esp8266​github.com
d6bbb47653448eb043dea1100881d4be.png

也可以根据cr4fun的教程自己做图片,推荐自己做,动手更有意思,如何做可以看如下链接:

cr4fun:excel 2 pbm(手动制图)全过程​zhuanlan.zhihu.com
f9a0b7054f13dc83042b9e71aeba7c5a.png

54d84f7696e49a4bc48f997cb2f06559.png
恐龙pbm两帧图片

控制startRun变量,为true代表运动,false代表停止

controlWay 

上述代码中,加入了按键防抖功能,在cr4fun原有代码中,按键没有消抖操作,导致有几率按下按钮没有反应。

这样按键没有问题了,用户可以通过改变wayNum值做单一处理。

测试好按键和mqtt都能实现控制之后,就可以把chooseCtrlWay函数中wayNum判断去掉,直接两个让两种方式都生效:

def 

绘图

绘图这一块参考了cr4fun的代码,在esp8266上实现12864屏幕驱动,强烈建议先看cr4fun的实现:

OpensourceBooks/animation_on_esp8266​github.com
d6bbb47653448eb043dea1100881d4be.png
三方库:12864屏幕驱动由ssd1306提供,绘图库由gfx.py提供(代码见文章底部附录),建议要看懂代码!

1306驱动一块可以从下面的博客了解协议:

https://blog.csdn.net/notMine/article/details/79317782​blog.csdn.net

这里主要讲如何做连接。这里使用的oled 12864遵循I2C协议,注意,要四个引脚的!!!

2a3223ccd47244961d832c22b517db37.png
oled四引脚

接线的话VCC接3.3V,GND接地,SCL接D4,SDA接D3。如果不熟悉引脚,去我上一篇文章看引脚图。

D3对应GPIO0,D4对应GPIO2,所以代码中有i2c = I2C(scl=Pin(2), sda=Pin(0), freq=100000)

这里将图片的一些参数提取出来,好做图片更换:

picStartIndex 

通过如下代码进行图片设置图片及显示:

oled

最终主函数为:

while 

最终代码:

from 

附录

屏幕驱动:ssd1306.py:

# MicroPython SSD1306 OLED driver, I2C and SPI interfaces

绘图库gfx.py:

# Port of Adafruit GFX Arduino library to MicroPython.

下一篇文章,将会把代码融合到恐龙项目中,敬请期待!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值