回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

【PinPong】520的心心相印,居然有bug!!! 简单

头像 宙仔 2021.05.09 677 4

继续玩Oled!还是DF提供的PinPong库!!!

5·20又来了,继续用技术男的方式进行表白,这次就用oled屏来画个“心心相印”吧。

project-image

     为了方便绘制,我们用绘图软件先画好草图,记下每个关键点的坐标。

     通过查看Pinpong库中oled参数有描点、划线、画正方形、画圆的函数,里面居然没有画弧线的函数,好吧,那就还是用描点的方法来写一个绘制弧线的函数吧。

       我们根据数学中圆的参数方程可以得知,圆弧上的每个坐标可以通过圆心坐标,半径和对应的角度(弧度单位)来表示出来。因此,我们可以利用圆的参数方程来设置oled中绘制圆弧的函数drawcircle(x,y,r,a,b)。我们可以通过圆心坐标(x,y),半径r和角度范围(a,b)来实现圆弧的绘制。

  

project-image

说明:函数中没有oled.show(),是先好绘图最后才显示。

弧线的绘制,0度是在3点位置,

此处使用了python的math库,因此,在python程序中必须要导入math库,

线段的绘制我们可以使用oled库中自带的line函数。

依次使用drawcircle()和line()按照上图中标定的坐标点,画出相应的图形即可。

贴个代码:

project-image

运行程序后,what?怎么心碎了~~~

project-image

特别说明,运行fill(1)的时候,每个区域都能点亮的。

为了证实是否是显示屏的出现了状态,在“心碎”区域划线(见下python代码),线段变成一个“点”了~~~完全不能显示出来!!!

代码
from pinpong.board import Board

from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C

 

Board("uno").begin()               

oled = SSD1306_I2C(width=128,height=64)

 

oled.line(115,56,96,23,col=1)

oled.show()
project-image

找葛老师测试了一下以上的代码,他的显示屏也出现了同样的情况!(大家也可以帮忙测试一下,看看是否是这个情况???)

原以为是line函数的问题,自己也写了一个drawline的函数,结果也是一样!

不知道DF的技术是否注意到这个问题?

好了,虽然oled屏让我们“心碎”,但我们的心心相印还继续做下去哈。

图案整体往前移20个像素点(y坐标不变,所有x坐标-20),看看是否完整?

运行后图形如下:

project-image

有残缺,但并非心碎!

简单修改以下,变成以下图形:

project-image

好了,最后贴上完整的代码!

代码
import time
import math
from pinpong.board import Board,Pin
from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C


Board("uno").begin()               
oled = SSD1306_I2C(width=128,height=64)

def drawcircle(x,y,r,a,b):
    for i in range(a,b):
        rad=math.radians(i)
        oled.pixel(int(x+r*math.cos(rad)), int(y+r*math.sin(rad)),col=1)

drawcircle(20,23,16,180,310)
drawcircle(40,23,16,230,360)
drawcircle(60,23,16,230,360)
oled.line(4,23,30,56,col=1)
oled.line(30,56,56,23,col=1)
oled.line(40,44,50,56,col=1)
oled.line(50,56,75,23,col=1)
oled.text("IOU",60,23)
oled.text("20210520",64,48)
oled.show()

评论

user-avatar
  • 虾虾^0^

    虾虾^0^2021.08.11

    厉害

    0
    • 虾虾^0^

      虾虾^0^2021.08.11

      0
      • 顷世纪

        顷世纪2021.06.21

        金镶玉啊,楼主这化腐朽为神奇的创造力max,厉害

        0
        • 秦皇岛岛主

          秦皇岛岛主2021.06.18

          楼主的IOU,太有魔性的避免bug的方式了,多谢楼主反馈,0.3.8版本的pinpong已经修正了这个bug,已经发布到了pypi

          0