ESP8266基于microPython的OLED(SSD1306)驱动程序
来源:互联网 发布:印度军工 知乎 编辑:程序博客网 时间:2024/05/22 13:50
ESP8266基于microPython的OLED(SSD1306)驱动程序
最近买了一个NodeMCU的板子:NodeMCU是一个开源的物联网平台, 它使用Lua脚本语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. NodeMCU包含了可以运行在 esp8266 Wi-Fi SoC芯片之上的固件,以及基于ESP-12模组的硬件。
作为练手的几个基本项目,先做出了通过I2C控制OLED显示的程序
硬件接线
上图是NodeMcu的IO引脚分配图
使用GND、3V3、D4(GPIO2)、D3(GPIO0)连接I2C接口的OLED
GPIO2接SCL,GPIO0接SDA
Python代码
使用microPython语言,仅实现8x6的字符、数字、字母的显示:
from machine import Pin,I2Ci2c = I2C(-1,scl = Pin(2), sda = Pin(0), freq = 400000)--i2c_address = 60i2c_address = i2c.scan()[0]def init(): init_command = [0xae, 0x00, 0x10, 0x40, 0xb0, 0x81, 0xff, 0xa0, 0xa6, 0xa8, 0x3f, 0xc0, 0xd3, 0x00, 0xd5, 0x80, 0xd8, 0x05, 0xd9, 0xf1, 0xda, 0x12, 0xdb, 0x30, 0x8d, 0x14] for i in init_command: i2c.writeto_mem(i2c_address, 0x00, chr(i)) clear() i2c.writeto_mem(i2c_address, 0x00, chr(0xaf))def clear(): for i in range(8): i2c.writeto_mem(i2c_address, 0x00, chr(0xb0+i)) i2c.writeto_mem(i2c_address, 0x00, chr(0x00)) i2c.writeto_mem(i2c_address, 0x00, chr(0x10)) for n in range(128): i2c.writeto_mem(i2c_address, 0x40, chr(0x00))def set_pos(x, y): if x<128 and y<8: i2c.writeto_mem(i2c_address, 0x00, chr(0xb0+y)) i2c.writeto_mem(i2c_address, 0x00, chr(((x&0xf0)>>4)|0x10)) i2c.writeto_mem(i2c_address, 0x00, chr(x&0x0f))def char(x, y, ch): Font6x8 = [[0x00, 0x00, 0x00, 0x00, 0x00, 0x00], [0x00, 0x00, 0x00, 0x2f, 0x00, 0x00], [0x00, 0x00, 0x07, 0x00, 0x07, 0x00], [0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14], [0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12], [0x00, 0x62, 0x64, 0x08, 0x13, 0x23], [0x00, 0x36, 0x49, 0x55, 0x22, 0x50], [0x00, 0x00, 0x05, 0x03, 0x00, 0x00], [0x00, 0x00, 0x1c, 0x22, 0x41, 0x00], [0x00, 0x00, 0x41, 0x22, 0x1c, 0x00], [0x00, 0x14, 0x08, 0x3E, 0x08, 0x14], [0x00, 0x08, 0x08, 0x3E, 0x08, 0x08], [0x00, 0x00, 0x00, 0xA0, 0x60, 0x00], [0x00, 0x08, 0x08, 0x08, 0x08, 0x08], [0x00, 0x00, 0x60, 0x60, 0x00, 0x00], [0x00, 0x20, 0x10, 0x08, 0x04, 0x02], [0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E], [0x00, 0x00, 0x42, 0x7F, 0x40, 0x00], [0x00, 0x42, 0x61, 0x51, 0x49, 0x46], [0x00, 0x21, 0x41, 0x45, 0x4B, 0x31], [0x00, 0x18, 0x14, 0x12, 0x7F, 0x10], [0x00, 0x27, 0x45, 0x45, 0x45, 0x39], [0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30], [0x00, 0x01, 0x71, 0x09, 0x05, 0x03], [0x00, 0x36, 0x49, 0x49, 0x49, 0x36], [0x00, 0x06, 0x49, 0x49, 0x29, 0x1E], [0x00, 0x00, 0x36, 0x36, 0x00, 0x00], [0x00, 0x00, 0x56, 0x36, 0x00, 0x00], [0x00, 0x08, 0x14, 0x22, 0x41, 0x00], [0x00, 0x14, 0x14, 0x14, 0x14, 0x14], [0x00, 0x00, 0x41, 0x22, 0x14, 0x08], [0x00, 0x02, 0x01, 0x51, 0x09, 0x06], [0x00, 0x32, 0x49, 0x59, 0x51, 0x3E], [0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C], [0x00, 0x7F, 0x49, 0x49, 0x49, 0x36], [0x00, 0x3E, 0x41, 0x41, 0x41, 0x22], [0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C], [0x00, 0x7F, 0x49, 0x49, 0x49, 0x41], [0x00, 0x7F, 0x09, 0x09, 0x09, 0x01], [0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A], [0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F], [0x00, 0x00, 0x41, 0x7F, 0x41, 0x00], [0x00, 0x20, 0x40, 0x41, 0x3F, 0x01], [0x00, 0x7F, 0x08, 0x14, 0x22, 0x41], [0x00, 0x7F, 0x40, 0x40, 0x40, 0x40], [0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F], [0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F], [0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E], [0x00, 0x7F, 0x09, 0x09, 0x09, 0x06], [0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E], [0x00, 0x7F, 0x09, 0x19, 0x29, 0x46], [0x00, 0x46, 0x49, 0x49, 0x49, 0x31], [0x00, 0x01, 0x01, 0x7F, 0x01, 0x01], [0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F], [0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F], [0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F], [0x00, 0x63, 0x14, 0x08, 0x14, 0x63], [0x00, 0x07, 0x08, 0x70, 0x08, 0x07], [0x00, 0x61, 0x51, 0x49, 0x45, 0x43], [0x00, 0x00, 0x7F, 0x41, 0x41, 0x00], [0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55], [0x00, 0x00, 0x41, 0x41, 0x7F, 0x00], [0x00, 0x04, 0x02, 0x01, 0x02, 0x04], [0x00, 0x40, 0x40, 0x40, 0x40, 0x40], [0x00, 0x00, 0x01, 0x02, 0x04, 0x00], [0x00, 0x20, 0x54, 0x54, 0x54, 0x78], [0x00, 0x7F, 0x48, 0x44, 0x44, 0x38], [0x00, 0x38, 0x44, 0x44, 0x44, 0x20], [0x00, 0x38, 0x44, 0x44, 0x48, 0x7F], [0x00, 0x38, 0x54, 0x54, 0x54, 0x18], [0x00, 0x08, 0x7E, 0x09, 0x01, 0x02], [0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C], [0x00, 0x7F, 0x08, 0x04, 0x04, 0x78], [0x00, 0x00, 0x44, 0x7D, 0x40, 0x00], [0x00, 0x40, 0x80, 0x84, 0x7D, 0x00], [0x00, 0x7F, 0x10, 0x28, 0x44, 0x00], [0x00, 0x00, 0x41, 0x7F, 0x40, 0x00], [0x00, 0x7C, 0x04, 0x18, 0x04, 0x78], [0x00, 0x7C, 0x08, 0x04, 0x04, 0x78], [0x00, 0x38, 0x44, 0x44, 0x44, 0x38], [0x00, 0xFC, 0x24, 0x24, 0x24, 0x18], [0x00, 0x18, 0x24, 0x24, 0x18, 0xFC], [0x00, 0x7C, 0x08, 0x04, 0x04, 0x08], [0x00, 0x48, 0x54, 0x54, 0x54, 0x20], [0x00, 0x04, 0x3F, 0x44, 0x40, 0x20], [0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C], [0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C], [0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C], [0x00, 0x44, 0x28, 0x10, 0x28, 0x44], [0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C], [0x00, 0x44, 0x64, 0x54, 0x4C, 0x44], [0x00, 0x00, 0x10, 0xFE, 0x82, 0x00], [0x00, 0x00, 0x00, 0xFF, 0x00, 0x00], [0x00, 0x82, 0xFE, 0x10, 0x00, 0x00], [0x02, 0x01, 0x01, 0x02, 0x02, 0x01]] i = 0 c = ord(ch)-32 if c < 99: set_pos(x,y) for i in range(6): i2c.writeto_mem(i2c_address, 0x40, chr(Font6x8[c][i]))def string(x, y, buf): for i in buf: if i == '\0': break char(x, y, i) x = x + 6; if x>122: x = 0 y = y + 1
时间:2017年7月25日
作者:许基业
阅读全文
0 0
- ESP8266基于microPython的OLED(SSD1306)驱动程序
- 【ESP8266】基于ESP8266的MicroPython入门笔记
- 【ESP8266】基于ESP8266的MicroPython连接MQTT服务器
- micropython--esp8266
- SSD1306 OLED 驱动
- Arduino驱动SSD1306 OLED
- esp8266使用micropython对GPIO的操作
- OLED的驱动程序
- 【ESP8266】使用uPyLoader调试运行MicroPython的ESP8266
- stm32 ssD1306 OLED驱动架构
- OpenWrt驱动OLED(SSD1306)过程记录
- Intel Edison arduino代码驱动OLED(SSD1306)
- esp8266使用micropython链接WiFi
- 基于51的OLED驱动
- 一款基于ssd1306驱动的12864屏简介
- micropython esp8266固件工具教程资源
- dm3730平台oled显示时钟——ssd1306驱动
- 【Arduino】【MATLAB】用ssd1306 oled屏显示任意图片
- React的dangerouslySetInnerHTML与Angular的ng-bind-html
- MySQL 数据库性能优化之SQL优化
- 前序遍历 中序遍历 后续遍历的递归与非递归算法
- 在PHP中使用curl_init函数的说明
- 实战Java高并发程序设计(三)JDK并发包
- ESP8266基于microPython的OLED(SSD1306)驱动程序
- 最短路问题分析
- 优雅的JavaScript-基础
- Spring Cloud学习--服务发现(Eureka)
- 迷宫问题
- 如何在百度地图标注公司名称
- Android图片三级缓存的原理及实现
- Windows 在某个目录下的所有文件中查找包含某个字符串
- XMLHttpRequest对象属性及常用方法