树莓派3做的OLED小时钟

树莓派3做的OLED小时钟_第1张图片

刚刚搞定这个 :D

方法如上一篇,利用树莓派python驱动I2C OLED自带的示例程序改写的。具体请参考上一篇日志:http://blog.csdn.net/ki1381/article/details/52425565

今天试了下,发现Photoshop另存为PNG时选择“交错”选项做出来的图片可以正确识别。图中的树莓派Logo是用驱动自带的示例图片改的。原图白底黑图,我在Photoshop里反相了一下,就变成黑底白图了。

时钟的代码如下:

#!/usr/bin/env python

import time
import datetime as datetime
from oled.device import ssd1306, sh1106
from oled.render import canvas
from PIL import ImageDraw, Image,ImageFont

device = ssd1306(port=1, address=0x3C)
font = ImageFont.load_default()
fontYear = ImageFont.truetype('/usr/share/fonts/truetype/roboto/RobotoCondensed-Regular.ttf', 18)
font2 = ImageFont.truetype('/usr/share/fonts/truetype/roboto/RobotoCondensed-Regular.ttf', 16)
logo = Image.open('./images/pi.png')

def Show(d,fullDt):   
    
    y =  fullDt.strftime('%Y')
    dt = fullDt.strftime('%m-%d')
    tm = fullDt.strftime('%H:%M:%S')  

    with canvas(d) as draw:        
        draw.bitmap((0, 0), logo, fill=1)
        draw.text((66, 0), y, font=fontYear, fill=255)
        draw.text((66, 22), dt, font=font2, fill=255)
        draw.text((66, 44), tm, font=font2, fill=255)

def main():
    nowDt = datetime.datetime.now() + datetime.timedelta(hours=8)
    while True:
        Show(device,nowDt)
        nowDt = nowDt + datetime.timedelta(seconds=1)
        time.sleep(1)

if __name__ == "__main__":
    main()

我想试验在循环体外显示图片一次,循环体内只改文字,但目前为止还没成功,先放一下吧,毕业论文格式审查没通过,要改这个先.....

PS:

把喜欢的图片改成不超过128x64之后,在Photoshop里先把模式改成灰度,然后调一下对比度和亮度,在不影响视觉的前提下尽可能对比度大。然后再改模式为“位图”,方法选“扩散仿色”,然后另存为PNG,选项为交错,就可以让OLED显示了。以下是我做的样例:

(樱木花道)


(J10)


(你们家周伦伦)


(悠嘻猴)


不明真相的围观群众还有:

好吧我就等着再延半年毕业吧











你可能感兴趣的:(树莓派,&,Arduino)