当前所在位置: 首页 > 生活常识 > 正文

桌面倒计时软件怎么用(倒计时器桌面)

2023-01-21 canyinms.com 【 字体:

桌面倒计时软件怎么用,倒计时器桌面。小编来告诉你更多相关信息。

使用树莓派和电子纸显示屏开始倒计时你的下一个假期。

桌面倒计时软件怎么用(倒计时器桌面)

圆周率日Pi Day(3 月 14 日) 来了又走,留下美好的回忆以及许多树莓派项目等待我们去尝试。在任何令人精神振奋、充满欢乐的假期后回到工作中都很难,圆周率日也不例外。当我们回望三月的时候,渴望那些天的快乐。但是不用害怕,亲爱的圆周率日庆祝者们,我们开始下一个节日的漫长倒计时!

好了,严肃点。我做了一个圆周率日倒计时器,你也可以!

不久前,我购买了一个 树莓派 Zero W,并且用它来解决 WiFi 信号较差的原因。我也对使用电子纸ePaper来作为它的显示屏十分感兴趣。虽然我不知道该用它来干什么,但是!它看起来真的很有趣!我买了一个十分适合放在树莓派的顶部的 2.13 英寸的WaveShare 显示器。安装很简单:只需要将显示器接到树莓派的 GPIO 上即可。

我使用 树莓派操作系统来实现该项目,虽然其他的操作系统肯定也能完成。但是下面的raspi-config命令在树莓派系统上很容易使用。

一.设置树莓派和电子纸显示屏

设置树莓派和电子纸显示屏一起工作,需要你在树莓派软件中启用串行外设接口(SPI),安装 BCM2835 C 库(来访问树莓派上的博通 BCM 2835 芯片的 GPIO 功能),安装 Python GPIO 库来控制电子纸显示屏。最后,你需要安装 WaveShare 的库来使用 Python 控制这个 2.13 英寸的显示屏。

下面是完成这些的步骤。 启用 SPI

树莓派上启用 SPI 最简单的方式是使用 raspi-config命令。SPI 总线允许与设备进行串行数据通信——在本例中,电子纸显示:

$ sudo raspi-config

从弹出的菜单中, 选择 “接口选项Interfacing Options-> SPI -> 是Yes” 来启用 SPI 接口,然后启动。

安装 BCM2835 库

如上所述,BCM2835 库是用于树莓派博通 BCM2385 芯片的软件,它允许访问 GPIO 引脚来控制设备。

在我写这篇文章之时,用于树莓派的最新博通 BCM2385 库版本是 v1.68 。安装此库需要下载软件压缩包然后使用 make来安装:

$ pushd bcm2835-1.68/

$ sudo ./configure

$ sudo make check

$ sudo make install

安装需要的 Python 库

你用 Python 控制电子纸显示屏需要安装 Python 库 RPi.GPIO,还需要使用python3-pil包来画图。显然,PIL 包已经不行了,但 Pillow 可以作为代替方案。我还没有为该项目测试过 Pillow ,但它可行:

$ sudo apt-get update

$ sudo apt-get install python3-pip python3-pil

$ sudo pip3 install RPi.GPIO

注意:这些是 Python3 的指令。你可以在 WaveShare 网站查到 Python2 的指令。

下载 WaveShare 示例和 Python 库

Waveshare 维护了一个 Python 和 C 的 Git 库,用于使用其电子纸显示屏和一些展示如何使用它们的示例。对这个倒计时时钟而言,你需要克隆这个库并使用用于 2.13 英寸显示屏的库:

$ git clone https://github.com/waveshare/e-Paper.gi>

如果你用不同的显示器或者其他公司产品,需要使用适配软件。

Waveshare 提供了很多指导:

WaveShare 电子纸设置指导

WaveShare 电子纸库安装指导

获得有趣的字体(选做)

你可以随心所欲的使用显示器,为什么不搞点花样?找一个炫酷的字体!

这有大量 开放字体许可的字体可供选择。我十分喜爱 Bangers 字体。如果你看过 YouTube 那你见过这种字体了,它十分流行。你可以下载到本地的共享字体目录文件中,并且所有的应用都可以使用,包括这个项目:

$ mkdir -p ~/.local/share/fonts

$ curl -sSL https://github.com/google/fonts/raw/master/ofl/bangers/Bangers-Regular.ttf -o fonts/Bangers-Regular.ttf

创建一个圆周率日倒计时器

现在你已经安装好了软件,可以使用带有炫酷字体的电子纸显示屏了。你可以创建一个有趣的项目:倒计时到下一个圆周率日!

如果你想,你可以从该项目的 GitHub 仓库直接下载countdown.py这个 Python 文件并跳到文章结尾。

为了满足大家的好奇心,我将逐步讲解。

导入一些库

import logging

import os

import sys

import time

from datetime import datetime

from pathlib import Path

from PIL import Image,ImageDraw,ImageFont

logging.basicConfig(level=logging.INFO)

basedir = Path(__file__).parent

waveshare_base = basedir.joinpath(\'e-Paper\', \'RaspberryPi_JetsonNano\', \'python\')

libdir = waveshare_base.joinpath(\'lib\')

开始先导入一些标准库之后脚本中用。也需要你从 PIL 添加 Image、ImageDraw和ImageFont,你会用到这些来画一些简单的图形。最后,为本地lib目录设置一些变量,该目录包含了用于 2.13 英寸显示屏的 Waveshare Python 库,稍后你可以使用这些变量从本地目录加载库。

字体大小辅助函数

下一部分是为你选择的 Bangers-Regular.ttf 字体建立一个修改大小的辅助函数。该函数将整型变量作为大小参数,并返回一个图形字体对象来用于显示:

def set_font_size(font_size):

logging.info(\"Loading font...\")

return ImageFont.truetype(f\"{basedir.joinpath(\'Bangers-Regular.ttf\').resolve}\", font_size)

倒计时逻辑

接下来是计算这个项目的一个函数:距下次圆周率日还有多久。如果是在一月,那么计算剩余天数将很简单。但是你需要考虑是否今年的圆周率日是否已经过去了(允悲)。如果是的话,那么计算在你可以再次庆祝之前还有多少天:

def countdown(now):

piday = datetime(now.year, 3, 14)

if piday

主函数

最后,到了主函数,需要初始化显示屏并向它写数据。这时,你应该写一个欢迎语然后再开始倒计时。但是首先,你需要加载 Waveshare 库:

def main:

if os.path.exists(libdir):

sys.path.append(f\"{libdir}\")

from waveshare_epd import epd2in13_V2

else:

logging.fatal(f\"not found: {libdir}\")

sys.exit(1)

上面的代码片段检查以确保该库已下载到倒计时脚本旁边的目录中,然后加载epd2in13_V2库。如果你使用不同的显示屏,则需要使用不同的库。如果你愿意,也可以自己编写。我发现阅读 Waveshare 随显示屏提供的 Python 代码很有趣,它比我想象的要简单得多。

下一段代码创建一个 EPD(电子纸显示屏)对象以与显示器交互并初始化硬件:

logging.info(\"Starting...\")

epd = epd2in13_V2.EPD

logging.info(\"Initialize and clear...\")

epd.init(epd.FULL_UPDATE)

epd.Clear(0xFF)

关于电子纸的一个有趣之处:它仅在将像素从白色变为黑色或从黑色变为白色时才耗电。这意味着当设备断电或应用程序因任何原因停止时,屏幕上的任何内容都会保留下来。从功耗的角度来看,这很好,但这也意味着你需要在启动时清除显示,否则你的脚本只会覆盖屏幕上已有的内容。 因此,epd.Clear(0xFF)用于在脚本启动时清除显示。

接下来,创建一个“画布”来绘制剩余的显示输出:

logging.info(f\"Creating canvas - height: {epd.height}, width: {epd.width}\")

draw = ImageDraw.Draw(image)

这与显示器的宽度和高度相匹配——但它有点反直觉,因为显示器的短边是宽度。我认为长边是宽度,所以这只是需要注意的一点。 请注意,epd.Height</code>和epd.Width</code>由 Waveshare 库设置以对应于你使用的设备。

欢迎语

接下来,你将开始画一些画。这涉及在你之前创建的“画布”对象上设置数据。这还没有将它绘制到电子纸显示屏上——你现在只是在构建你想要的图像。由你为这个项目绘制带有一块馅饼的图像,来创建一个庆祝圆周率日的欢迎信息:

很可爱,不是吗?

logging.info(\"Set text text...\")

bangers64 = set_font_size(64)

draw.text((0, 30), \'PI DAY!\', font = bangers64, fill = 0)

logging.info(\"Set BMP...\")

bmp = Image.open(basedir.joinpath(\"img\", \"pie.bmp\"))

image.paste(bmp, (150,2))

最后,真是是最后了,你可以展示你画的图画:

logging.info(\"Display text and BMP\")

epd.display(epd.getbuffer(image))

上面那段话更新了显示屏,以显示你所画的图像。

接下来,准备另一幅图像展示你的倒计时:

圆周率日倒计时

首先,创建一个用来展示倒计时的图像对象。也需要设置数字的字体大小:

logging.info(\"Pi Date countdown; press CTRL-C to exit\")

piday_image = Image.new(\'1\', (epd.height, epd.width), 255)

piday_draw = ImageDraw.Draw(piday_image)

bangers36 = set_font_size(36)

bangers64 = set_font_size(64)

为了使它显示的时候更像一个倒计时,更新图像的一部分是更加有效的手段,仅更改已经改变的显示数据部分。下面的代码准备以这样方式运行:

epd.displayPartBaseImage(epd.getbuffer(piday_image))

epd.init(epd.PART_UPDATE)

最后,需要计时,开始一个无限循环来检查据下次圆周率日还有多久,并显示在电子纸上。如果到了圆周率日,你可以输出一些庆祝短语:

while (True):

days = countdown(datetime.now)

unit = get_days_unit(days)

piday_draw.rectangle((0, 50, 250, 122), fill = 255)

piday_draw.text((10,10), \"Days till Pi-day:\", font = bangers36, fill = 0)

if days == 0:

piday_draw.text((0, 50), f\"It\'s Pi Day!\", font = bangers64, fill = 0)

else:

piday_draw.text((70, 50), f\"{str(days)} {unit}\", font = bangers64, fill = 0)

epd.displayPartial(epd.getbuffer(piday_image))

time.sleep(5)

脚本最后做了一些错误处理,包括捕获键盘中断,这样你可以使用 Ctrl + C来结束无限循环,以及一个根据计数来打印day或days的函数:

except IOError as e:

logging.info(e)

except KeyboardInterrupt:

logging.info(\"Exiting...\")

epd.init(epd.FULL_UPDATE)

epd.Clear(0xFF)

time.sleep(1)

epd2in13_V2.epdconfig.module_exit

exit

def get_days_unit(count):

if count == 1:

return \"day\"

return \"days\"

if __name__ == \"__main__\":

现在你已经拥有一个倒计时并显示剩余天数的脚本!这是在我的树莓派上的显示(视频经过加速,我没有足够的磁盘空间来保存一整天的视频):

桌面倒计时软件怎么用(倒计时器桌面)

安装 systemd 服务(选做)

如果你希望在系统打开时运行倒计时显示,并且无需登录并运行脚本,你可以将可选的 systemd 单元安装为 systemd 用户服务。

将 GitHub 上的 piday.service文件复制到${HOME}/.config/systemd/user,如果该目录不存在,请先创建该目录。然后你可以启用该服务并启动它:

$ mkdir -p ~/.config/systemd/user

$ cp piday.service ~/.config/systemd/user

$ systemctl --user enable piday.service

$ systemctl --user start piday.service

$ loginctl enable-linger $USER

该脚本将输出到 systemd 日志,可以使用 journalctl命令查看输出。

它开始看起来像是圆周率日了!

这就是你的作品!一个显示在电子纸显示屏上的树莓派 Zero W 圆周率日倒计时器!并在系统启动时使用 systemd 单元文件启动!现在距离我们可以再次相聚庆祝圆周率日还有好多天的奇妙设备———树莓派。通过我们的小项目,我们可以一目了然地看到确切的天数。

但实际上,每个人都可以在每一天在心中庆祝圆周率日,因此请使用自己的树莓派创建一些有趣且具有教育意义的项目吧!

via: https://opensource.com/article/21/3/raspberry-pi-countdown-clock

作者:Chris Collins选题:lujun9972译者:Donkey校对:wxy

阅读全文
相关推荐

如何自制蛋挞

如何自制蛋挞
1、倒入低筋面、黄油和水,揉成面团状,藏一小时后取出,抹上黄油卷起,包上保鲜膜冷藏半小时。2、取出,将面团切成一厘米的面团,放入模具内,用力按压,中间稍薄,外缘要比模具高,将蛋挞液倒入蛋挞皮中,放入烤箱里烤30分钟即可。

肉火烧面怎么和面

肉火烧面怎么和面
1、首先用温水把酵母融开,加入面粉,用手把面粉揉成非常软的面团,可以放一点熬好的猪油在面团里面。2、然后放在温暖的地方,盖上保鲜膜发酵至2倍大,发好的面团用手插入不回缩,就说明面团发酵好了。

奶茶几分糖好喝

奶茶几分糖好喝
1、不同的人对奶茶的口感要求是不一样的,一般来说,奶茶有三分糖、五分糖、七分糖三种不同的口味。2、女生一般都喜欢喝甜一点的,而男生则喜欢喝不那么甜的,七分糖的奶茶最好喝。

过桥米线是哪里的?

过桥米线是哪里的?
过桥米线是来自云南省滇南地区的一种有名特色小吃。过桥米线最早是在清朝就已经出现,距离现在至少有一百多年的历史啦!起源于建水县东城外锁龙桥西侧的鸡市街头处,有建水的特产草芽、地椒作配料,风味独特而远近闻名。深受广大美食爱好者的喜欢,不少人为此专门长途跋涉,只为尝

面霜和乳液的区别

面霜和乳液的区别
面霜和乳液的区别,相较而言乳液的水分含量要比面霜高,乳液质地要轻薄一些,乳液主要作用是保湿,滋润可以隔离外界干燥的气候,面霜既可保湿,又可美白,还能抗衰老,乳液的吸收快一些,而面霜吸收比较慢一些,因为液体的吸收速度都比较快。

怎么摘隐形眼镜

怎么摘隐形眼镜
在摘隐形眼镜之前,先用洗手液将手清洗干净,以免将细菌带入眼睛内,对着镜子,用右手中指轻拉眼睛下眼睑,左手中指轻拉眼睛上眼睑,让黑色眼球暴露在空气中,用右手食指和拇指轻触镜片的两边缘部分,向中间推使镜片拱起,再用两手指轻轻捏出镜片即可。

粉饼和散粉的区别

粉饼和散粉的区别
粉饼是呈压缩固体状态,多呈圆形或者方形,散粉则是细腻的粉末状,粉饼遮瑕力会比较强一些,可以湿用做粉底,或者用来补妆,而散粉则是定妆的效果,粉饼通常用在底妆的第一步,而散粉通常用在底妆最后一步。

冷烫和热烫的区别

冷烫和热烫的区别
冷烫和热烫的区别:冷烫对头发的要求是要在保温状态下才能给卷有个好的效果,而热烫是在干和湿的情况下都行,热烫烫出来的头发比较自然明显而有弹力,冷烫的头发风干后基本看不出来,并且发质会有点干。

高品质香水如何鉴别?用三步就可以解决

高品质香水如何鉴别?用三步就可以解决
1、看色泽以天然香料调制而成的高级香水,都有它本来的颜色,且大都是琥珀色或褐色,看起来很像宝石,比如,从茉莉、玫瑰或水仙等天然鲜花中所萃取的精油都呈黄色、褐白或绿褐色;此外,香水中所添加的魅惑香气物性香料也是褐色,苔类中的橡树苔是绿色,从树根或树根脂类中萃取的

如何去除黑眼圈

如何去除黑眼圈
去除黑眼圈首先可以用热毛巾敷眼,然后再用冷毛巾敷,十分钟就能让黑眼圈淡化的不那么严重,其次将去壳后的鸡蛋用无菌纱布包裹住,敷于眼部轻轻转动,可以急救去除黑眼圈,另外抹完眼霜后,用双手顺时针按摩,可以促进血液循环消除黑眼圈。
本文Tag