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屏幕汉字显示示例

ESP32 MicroPython开发之旅 设备篇⑦ —— dht11 OLED ssd1306,简单上手

MicroPython ESP32ssd1306驱动0.96“I2C屏幕cube3D图形显示