ESP32+时钟、闹钟、温度+microPython程序 (2020-10-09)

ESP32+时钟、闹钟、温度+microPython程序 (2020-10-09),第1张

硬件:ESP32芯片、DS3231时钟芯片、五方向按键(带set和rst按键)、有源蜂鸣器、 LCD1602液晶屏(带PCF8574芯片,注意不是背光可调多种颜色的那种RGB1602)

软件:microPython

1、开始自动检测WIFI,检测到之后,自动从网络获取时间,并写入esp8266/esp32、同时写入ds3231时钟芯片中

2、如果不能联网,则自动从ds3231芯片获取时间

3、按中键,可以开启关闭屏幕背光

4、按set键,可以进入菜单,可以设置日期、时间、闹钟以及闹钟是否开启(默认每天循环)

5、液晶屏幕上,时间与温度中间,如果有个显示,表示闹钟是开启状态。 如果没有,则表示闹钟关闭

DS3231micropy : 从 >

安卓手机怎样设置闹钟

时钟-创建闹钟

vivo手机怎么调闹钟

请问您具体是要对闹钟调节什么呢?您可以进入手机桌面上的闹钟时钟,点击右上角“+”即可设置闹钟。若要调节闹钟音量,进入闹钟时钟--点击左菜单键--闹钟设置--调节滚动条即可控制闹钟音量大小。21以后系统进入设置--声音--调节最后一行的滚动条即可控制闹钟音量大小。

我的手机上怎么定闹钟

手机设置闹钟方法:

应用程序-时钟-点击右上角“+”号,然后设置闹钟的时间、提醒周期、响铃类型等即可,设置完成后选择保存即可设置闹钟。

三星手机怎么设置闹钟

打开应用程序

找到时钟点一下图标,出现创建闹钟。

然后就可以创建自己所需的时间。

移动4g手机如何设置闹钟

手机设置闹钟 和手机使用类型的网络以及运营商没有任何关系,只和手机的 *** 作系统有关。

以安卓Android OS 50系统为例,手机设置闹钟 方法如下:

(1)解锁手机,进入手机桌面。

(2)在手机桌面找到“时钟”点击进入——选择“闹钟”——然后点击需要设置 的闹钟,进入闹钟编辑界面——再点击“ ”,就可以设置闹钟 了,如图所示:

海信智能手机怎样设置闹钟

亲,点击手机屏幕上的时间,即有闹钟设置。

fanshisense/forumphpgid=245

lenovo手机如何设置闹钟

进入应用程序后,有个时钟的图标,只要点击时钟图标后就看得到添加闹钟设置时间了。

华为手机如何设置闹钟

时钟里面,有闹钟。点进去就可以设置了。

手机闹钟怎么设置20分钟响一次啊?

装个贪睡闹钟等闹铃软件,里面有个贪睡时间设置,比如设为20分钟,每次掐掉后20分钟后会再次提醒。

中兴手机怎样设置闹 音

1在待机页面下,点击应用程序。

2点击时钟。

3点击闹钟,然后点击+图标,创建一个新的闹钟。

4设定需要的闹钟时间、重复日期等相关参数,然后点击屏幕右上角的保存。

5点击屏幕右上角的菜单键,将闹钟前开机打钩即可。

○  触发:监听、单击、联动

○  反应:赋值、透明度、文本、停止、颜色、旋转、排序、重置

○  变量:数字变量及其计算表达

在计时器的三大流程(设置时间➡计时过程中➡时间到达提示)中,设置时间流程中,用户 *** 作按钮显示“开始”和“取消”,其中取消按钮不可用。计时开始后, *** 作按钮变为“暂停”和可用的“取消”按钮,用户点击“暂停”按钮使计时暂停及继续,同时按钮文本也会随点击在“继续”和“暂停”中进行切换;用户点击“取消”,本次计时 *** 作不再进行,回到计时开始前的设置时间页面。时间到达后,页面中其他按钮消失,显示“确定”按钮,点击确定使计时器回到初始状态。

滚动选择器是手机端常见的一种选择器,选择器会罗列所有的选项,用户可以通过滚动拨盘确认所需要的具体项。在实现的思路上,先利用protopie中滑页容器层实现按档位的滑动效果,而后可以通过联动触发将滑页值与具体选项的值关联起来。如果滑动过程中需要进行尺寸和透明度变化使其更接近真机效果,理论上也可以通过联动层进行设置。

计时器的剩余时间与之前时钟和秒表的案例正好相反,属于倒数计算,而且具体剩余时分秒数值的显示需要涉及时间单位的换算。首先将滚动选择器选定的时分秒数值统一换算成总秒数,才可以通过每秒-1实现当前剩余时间计算。然后需要将这个剩余时间再转换为时、分、秒的显示,这里利用了Protopie的数学函数floor()的取整函数。举例来说,当剩余时间为12340秒时,其中小时数为floor(12340/3600) → 3小时,分钟数为floor((12340-33600)/60) → 25分钟,秒数12340-33600-2560 → 40秒,可以表达为03:25:40。

在实现剩余时间的环状百分的实现上最大的难点在于Protopie中对图形描边的设置只有颜色、透明度、位置和宽度可以设置,想要实现最终效果上的环状百分比图的效果需要使用一些障眼法,对环状图进行切分后做旋转设置。

有两种思路:

a将黑色圆环做切割后做旋转设置。具体切割方法见下图说明将圆环不断进行对半切割,实现效果就是将1号线段先进行角度旋转后,当其旋转180度后隐藏并开始旋转2号线段,旋转90度后隐藏开始旋转3号线段,以此类推。(我实现过程中发现这种方法图层很多,管理起来太复杂基本pass这个方案,有兴趣的可以自行尝试)

b将黑色圆环做对半切割,左右分别做旋转设置,同时在左侧增加与背景一致的遮挡图层,使得右半侧圆环可以旋转入内,具体图层关系如下。这样图层管理更便捷,下面的具体实现步骤中使用的就是这种方法。

新建Protopie文件,实现滚动选择器及按钮的基本视效。

○  建立秒选择、分钟选择、小时选择三个滑页容器层,高度可以显示7个文本高度,将0-59、0-59、0-23的多层文本层分别放置其中。并将滑页设置如下,自定义高度为文本高度,案例中为40 。由于第一个文本和最后一个文本都需要滑动到中间的位置,所以还需要在文本前后,加上段前和段后的与背景色一致的矩形,高度为3个文本高度。

实现滚动选择器的滚动渐变效果,并建立三个变量分别命名为 hour 、 min 、 sec 使变量与滚动选择器选择的小时、分钟、秒数关联起来。

○  在滚动选择器滚动过程中的渐变效果有两种实现方式:

方式一:通过联动滑页容器的滚页值与单个具体文本的透明度进行联动设置,具体设置如下,但是这个方法需要对滑页容器中每个文本进行单独设置,较为繁琐,不建议使用。

方式二:可以直接在滚页容器层上添加背景色渐变的蒙版,模拟渐变效果。

○  利用联动将变量 hour 、 min 、 sec 与滚动选择器选择的小时、分钟、秒数关联起来。由于我们自定义了每次滑页值,所以可以直接使用单条联动范围设定,对应可以直接得到整数值。实现这一步后可以开启变量显示,预览一下具体效果。

新建变量 all 、 now ,对应用户设定计时的总时长和当前剩余时长。使用户点击“开始”后支持计时倒数,而开始后也支持计时的暂停、继续及取消。

○  当用户设定的时间为0时点击“开始”不起效,为了进行 *** 作判断,变量 all 的即用户设定的总时长最好是可以在用户滚动时可以直接进行赋值计算,所以首先对变量 hour 、 min 、 sec 添加监听,每次变化都对变量 all 进行一次赋值,表达式: (hour3600)+(min60)+sec

○  对开始的文本添加单击触发,当文本为“开始”且变量 all≠0 时,对变量 now 进行两次赋值,首先使其等于变量 all 的值,而后使其001秒减少001,延迟001进行,这边使用001的时间精度使得暂停和继续不用做复杂单秒内的时间判断。

○  当文本为“暂停”时停止变量 now 的倒数计时;当文本为“继续”时重新进行每001秒减少001,延迟001进行的设置。

○  最后对这几种状况的文本内容、文本颜色、文本透明度进行设定将 *** 作连贯起来。

将设定时间的滚动选择器隐藏,并剩余时间的数字表达和环形百分比资源导入,以实现倒计时过程中的基本视效。

○  数字表达中需要拆分时分秒,使用不同的文本图层

○  环形百分比主要分为三部分:①运动点&固定点,实现描边的圆角效果;②右半圆环分为底部黑色圆环和上部白色半透遮挡层(旋转180°、默认透明度0%);③左半圆环分为底部黑色圆环和上部白色半透遮挡层(旋转180°、默认透明度90%)。由于图层关系,默认效果显示为一个黑色正圆。

新建变量 ceilnow 、 lasth 、 lastm 、 lasts ,计算具体的剩余时间,将计算时间换算并显示为具体文本,实现计时过程中数字计时部分。

○  由于变量 now 之前设置中计算精度为001秒,所以计算剩余时间时先要进行一次去小数点后整数进一的设置,利用 ceil() 表达式,并复制给变量 ceilnow 。

○  结合前文对时间换算的思考,增加对变量 now 的监听触发,对变量 ceilnow 、 lasth 、 lastm 、 lasts ,分别进行赋值设置。

         变量ceilnow=ceil(now)

         变量lasth=floor((ceilnow/3600))

         变量lastm=floor((ceilnow-3600lasth)/60)

         变量lasts=ceilnow-3600lasth-60lastm

○  对变量 lasth 、 lastm 、 lasts 添加监听,对时分秒的文本内容进行设置,使其在显示上永远显示00:00:00的六位格式。

实现倒计时过程中,环形剩余时间百分比的显示。

○  首先是圆环边缘圆角的小圆点的旋转设置,在对变量 now 的监听触发下增加运动点的旋转设置。使其旋转角度与剩余时间与设定时间的比例相关,旋转至使用表达式 (now/all)360

○  然后是左右半圆的旋转设置,案例中主要是对白色半透遮挡层进行旋转设置。左右半边的旋转看为两个阶段,使用条件判断后进行设置。A当变量 now>all/2 时,增加排序的设置,将左侧半圆及其遮挡层放置于右侧半圆及遮挡层之后,右侧半圆遮挡透明度设为0%,再添加左侧遮挡的旋转表达式,案例中使用的是 (now/all)360-180 ,实际的话需要结合各自使用的切图资源。B变量 now<all/2且≥0 时,增加排序使得右侧半圆及其遮挡层放置于左侧之后,将右侧半圆遮挡透明度设为90%,使其显示并添加与右侧一致的旋转表达式。

○  设置完成后测试了一下,对几个节点值再增加旋转设置以保证效果:①当变量 now =变量 all 时,即用户开始计时的时候将左右半圆的上层遮挡均设为不被遮挡。②当变量 now = all /2 时,再做一次左右遮挡的旋转设置,使其显示为左侧完全遮挡、右侧完全显示。③变量 now =0且开始文本内容为“暂停”时,停止变量 now ,并且将右侧的遮挡半圆完全遮挡右侧半圈。

增加“时间到!”文本和“确定”按钮,当到达计时时间时显示出来。确认按钮支持点击 *** 作,实现完整的 *** 作逻辑。

○  增加“时间到!”和“确定”两个文本图层,监听变量 now 当其=0且开始文本内容为“暂停”时,添加透明度的设置,使其显示为下面右图所示效果。

○  对本文“确定”添加点击触发,添加一个重置,使其点击后使场景重置,恢复到最初效果。

最后整体整理一下所有图层透明度关系,使页面所有元素在不同的计时阶段中下进行正常的显示及隐藏。

大功告成!!!可以直接在预览窗中查看效果~~

>

/---------------------------------------------------------------/

/ 文件名称:SZ01c�                                             /

/ 程序功能:带定时闹铃时钟                                      /

/---------------------------------------------------------------/

#include <AT89X51H>    /包含器件配置文件/

#define uchar unsigned char

#define uint unsigned int

char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,

0x92,0x82,0xF8,0x80,0x90,};/0~9的数码管段码/

uchar hour=0,min=0,sec=0;   /时、分、秒单元清零/

uchar deda=0;        /5mS计数单元清零/

bit d_05s=0;               /05秒标志/

uchar set=0;      /模式设定标志/

uchar m=0;

uchar flag=0;      /RAM掉电标志/

void delay(uint k);     /延时函数/

void conv();         /走时单元转换/

void disp();      /走时时间显示函数/

/------------------------走时函数部分 ----------------------/

/定时器T0  5mS初始化/

void init_timer()

{

TMOD=0x01;

TH0=-(4800/256);

TL0=-(4800%256);

IE=0x82;

TR0=1;

}

/---------------------------------/

/5mS定时中断服务函数/

void T0_srv(void) interrupt 1

{

TH0=-(4800/256);

TL0=-(4800%256);

deda++;

}

/----------------------------------/

/时、分、秒单元及走时单元转换/

void conv()

{

if(deda<=100)d_05s=0;

else d_05s=1;

if(deda>=200){sec++;deda=0;}

if(sec==60){min++;sec=0;}

if(min==60){hour++;min=0;}

if(hour==24){hour=0;}

}

/------------------------ 显示函数部分 ----------------------/

/走时时间显示函数/

void disp()

{

P0=DATA_7SEG[hour/10];P2=0xf7;delay(1);

P0=DATA_7SEG[hour%10];P2=0xfb;delay(1);

if(d_05s==1){if(P2_2==0)P0_7=0;else P0_7=1;}

delay(1);

P0=DATA_7SEG[min/10];P2=0xfd;delay(1);

P0=DATA_7SEG[min%10];P2=0xfe;delay(1);

}

/---------------------- 调整时间函数部分 -------------------/

/调整走时时间/

void set_time()

{uchar m;

if(P2_5==0)delay(1);

if(P2_5==0)hour++;

if(hour==24)hour=0;

for(m=0;m<30;m++)

{

disp();

if(P2_2==0)P0_7=0;

else P0_7=1;

delay(1);

}

if(P2_6==0)delay(1);

if(P2_6==0)min++;

if(min==60)min=0;

for(m=0;m<30;m++)

{

disp();

if(P2_2==0)P0_7=0;

else P0_7=1;

delay(1);

}

}

/------------------ 按键扫描、延时等函数部分-------------------/

/走时时间程序函数/

void time()

{

conv();    / 走时单元转换函数  /

disp();    / 走时时间显示函数  /

}

/------------------------------------/

/扫描按键函数/

void scan_key()

{

delay(1);

if(P2_4==0)set++;

if(set>=2)set=0;

if(set==1)flag=0x55;

F0:if(P2_4==0)goto F0; /按键未释放,在此等候/

}

/------------------------------/

/延时函数/

void delay(uint k)

{

uint i,j;

for(i=0;i<k;i++){

for(j=0;j<121;j++)

{;}}

}

/----------------------- 主函数 ------------------------- /

/主函数/

void main()

{

init_timer();             /定时器T0初始化/

while(1)     /无限循环/

{

if(P2_4==0)scan_key();   /有按键,调用按键扫描函数/

switch(set)      /根据set键值散转/

{

case 0:time();  break;    /走时时间程序/

case 1:set_time();break;       /走时时间调整/

default:break;     /其它退出/

}

if(flag!=0x55)          /判断掉电标志/

{

P0=0xc0; P2=0xc0; delay(100);

P2=0xff; delay(400);

}

}

}

以上就是关于ESP32+时钟、闹钟、温度+microPython程序 (2020-10-09)全部的内容,包括:ESP32+时钟、闹钟、温度+microPython程序 (2020-10-09)、Vb滚动字幕程序代码 急、手机怎么调闹钟等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9701969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存