868|6

7047

帖子

11

TA的资源

版主

楼主
 

【得捷电子Follow me第3期】任务2 OLED显示动态图形 [复制链接]

  本帖最后由 lugl4313820 于 2023-11-8 20:31 编辑
OLED显示图形
在实现显示文字的前提下,我们要显示图形,库里没有写画线、画方块的图形,我添加了几个函数在ssd1306.py下面:
·	def rect(self,x,y,w,h,c):
        self.framebuf.rect(x, y, w, h, c)
        
    def fill_rect(self,x,y,w,h,c):
        self.framebuf.rect(x, y, w, h, c)
        
    def hline(self,x,y,w,c):
        self.framebuf.hline(x,y,w,c)
        
    def vline(self,x,y,h,c):
        self.framebuf.hline(x,y,h,c)
    
    def line(self,x1,y1,x2,y2,c):
        self.framebuf.line(x1,y1,x2,y2,c)

 

并且在ops.py下重写函数:
def rect(x,y,w,h,c):
    global _oled
    _oled.rect(x,y,w,h,c)

def fill_rect(x,y,w,h,c):
    global _oled
    _oled.fill_rect(x,y,w,h,c)
def hline(x,y,w,c):
    global _oled
    _oled.hline(x,y,w,c)

def vline(x,y,h,c):
    global _oled
    _oled.vline(x,y,h,c)
    
def line(x1,y1,x2,y2,c):
    global _oled
    _oled.line(x1,y1,x2,y2,c)

 

编写boot.py函数如下:
import time
from machine import Pin, SoftI2C
import ssd1306py as lcd
import math
oled_width = 128
oled_height = 64
# ESP8266 Pin assignment
i2c = SoftI2C(scl=Pin(7), sda=Pin(6))  # Adjust the Pin numbers based on your connections
lcd.init_i2c(7,6,128,64)

center_x = oled_width // 2
center_y = oled_height // 2
square_size = 6  # Size of each square
num_squares = 12  # Number of squares
angle_increment = 2 * math.pi / num_squares

while True:
    lcd.clear()  # Clear the screen
    
    for i in range(num_squares):
        angle = i * angle_increment
        x = int(center_x + (center_x - square_size-30) * math.cos(angle))
        y = int(center_y + (center_x - square_size-30) * math.sin(angle))
        
        # Draw all squares
        for j in range(num_squares):
            angle_j = j * angle_increment
            x_j = int(center_x + (center_x - square_size-30) * math.cos(angle_j))
            y_j = int(center_y + (center_x - square_size-30) * math.sin(angle_j))
            
            lcd.fill_rect(x_j, y_j, square_size, square_size, 1)  # Draw the square
        
        lcd.fill_rect(x, y, square_size, square_size, 0)  # Erase the current square
        lcd.show()
        time.sleep_ms(100)  # Pause before next iteration

 

下载到开发板后,效果如下:
显示动态图像

 

最新回复

哈哈哈大佬谦虚了,我也是偶然看到的framebuf有这个方法   详情 回复 发表于 2023-11-15 16:05
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

OLED显示动态图形效果还是不错的嘛

点评

还可以吧,应该,micropython的通用驱动还是挺好用的。  详情 回复 发表于 2023-11-9 08:16
 
 
 

回复

7047

帖子

11

TA的资源

版主

板凳
 
Jacktang 发表于 2023-11-9 07:26 OLED显示动态图形效果还是不错的嘛

还可以吧,应该,micropython的通用驱动还是挺好用的。

 
 
 

回复

6534

帖子

9

TA的资源

版主

4
 

这么快就是收到了,还以为刚开始呢,看着很不错啊 

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

29

帖子

4

TA的资源

一粒金砂(中级)

5
 

感谢佬提供的自己加函数的思路

佬可以把fill_rect修改一下,变成这样,就可以展现实心矩形了:

def fill_rect(self,x,y,w,h,c):
     self.framebuf.fill_rect(x, y, w, h, c)

点评

对的对的,多大谢大佬的指点,对这些编程知识我还得继续学习,就是时间不够呀!  详情 回复 发表于 2023-11-15 08:51
 
 
 

回复

7047

帖子

11

TA的资源

版主

6
 
SeasonMay 发表于 2023-11-14 17:50 感谢佬提供的自己加函数的思路 佬可以把fill_rect修改一下,变成这样,就可以展现实心矩形了: def f ...

对的对的,多大谢大佬的指点,对这些编程知识我还得继续学习,就是时间不够呀!

点评

哈哈哈大佬谦虚了,我也是偶然看到的framebuf有这个方法  详情 回复 发表于 2023-11-15 16:05
 
 
 

回复

29

帖子

4

TA的资源

一粒金砂(中级)

7
 
lugl4313820 发表于 2023-11-15 08:51 对的对的,多大谢大佬的指点,对这些编程知识我还得继续学习,就是时间不够呀!

哈哈哈大佬谦虚了,我也是偶然看到的framebuf有这个方法

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表