MicroPython ESP32ssd1306驱动0.96“I2C屏幕cube3D图形显示
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython ESP32ssd1306驱动0.96“I2C屏幕cube3D图形显示相关的知识,希望对你有一定的参考价值。
【MicroPython ESP32】ssd1306驱动0.96“I2C屏幕cube3D图形显示
- cube3D效果
原例程最早在一个
Arduino ssd1306 i2c
库的示例中可以找到这个示例:http://www.rinkydinkelectronics.com/library.php?id=80
依赖
ssd1306.py
模块
cube3D示例代码
这里所使用的软I2C接口,也预留了硬件I2C接口来驱动。
from math import cos,sin,pi
from machine import SoftI2C,Pin
# from ssd1306 import SSD1306_I2C
sda=Pin(25)
scl=Pin(26)
cube=[[-15,-15,-15],[-15,15,-15],[15,15,-15],[15,-15,-15],[-15,-15,15],[-15,15,15],[15,15,15],[15,-15,15]]
lineid=[1,2,2,3,3,4,4,1,5,6,6,7,7,8,8,5,8,4,7,3,6,2,5,1]
# i2c=machine.I2C(0,sda=sda,scl=scl,freq=400000)
i2c = SoftI2C(scl=scl,sda=sda)
oled = SSD1306_I2C(128, 64,i2c,addr=0x3c)
oled.fill(0)
def matconv(a,matrix):
res=[0,0,0]
for i in range(0,3):
res[i]=matrix[i][0]*a[0]+matrix[i][1]*a[1]+matrix[i][2]*a[2]
for i in range(0,3):
a[i]=res[i]
return a
def rotate(obj,x,y,z):
x=x/pi
y=y/pi
z=z/pi
rz=[[cos(z),-sin(z),0],[sin(z),cos(z),0],[0,0,1]]
ry=[[1,0,0],[0,cos(y),-sin(y)],[0,sin(y),cos(y)]]
rx=[[cos(x),0,sin(x)],[0,1,0],[-sin(x),0,cos(x)]]
matconv(matconv(matconv(obj,rz),ry),rx)
def drawcube(x,y,z):
oled.fill(0)
for i in range(0,8):
rotate(cube[i],x,y,z)
for i in range(0,24,2):
x1=int(64+cube[lineid[i]-1][0])
y1=int(32+cube[lineid[i]-1][1])
x2=int(64+cube[lineid[i+1]-1][0])
y2=int(32+cube[lineid[i+1]-1][1])
oled.line(x1,y1,x2,y2,1)
#print(64+cube[lineid[i]-1][0],32+cube[lineid[i]-1][1],64+cube[lineid[i+1]-1][0],32+cube[lineid[i+1]-1][1])
oled.show()
while True:
drawcube(0.1,0.2,0.3)
以上是关于MicroPython ESP32ssd1306驱动0.96“I2C屏幕cube3D图形显示的主要内容,如果未能解决你的问题,请参考以下文章
MicroPython ESP32ssd1306 0.96“OLED+气象数据中文显示
MicroPython ESP32ssd1306驱动0.96“I2C屏幕汉字显示示例
MicroPython ESP32ssd1306驱动0.96“I2C屏幕+mpu6050图形控制
MicroPython ESP32ssd1306模块基于GB2312字库驱动0.96“I2C屏幕汉字显示示例