硬件:ESP32芯片、DS3231时钟芯片、五方向按键(带set和rst按键)、有源蜂鸣器、 LCD1602液晶屏(带PCF8574芯片,注意不是背光可调多种颜色的那种RGB1602)
软件:microPython
1、开始自动检测WIFI,检测到之后,自动从网络获取时间,并写入esp8266/esp32、同时写入ds3231时钟芯片中
2、如果不能联网,则自动从ds3231芯片获取时间
3、按中键,可以开启关闭屏幕背光
4、按set键,可以进入菜单,可以设置日期、时间、闹钟以及闹钟是否开启(默认每天循环)
5、液晶屏幕上,时间与温度中间,如果有个显示,表示闹钟是开启状态。 如果没有,则表示闹钟关闭
DS3231micropy : 从 >
环境搭建就不讲了,直接说开发。
小闹钟程序开发中的要点就是:
1、时间选择对话框(TimePicker)
2、获取闹钟管理器并对其进行设置
3、注册广播接收器
掌握了这两点,写程序就很简单了。
1、新建android项目:Alarm,sdk版本选择22,Package name:comlqlactivity,Main Activity:Alarm
2、编写界面:直接修改layout中的mainxml文件,代码如下:
Xml代码
<xml version="10" encoding="utf-8">
<LinearLayout xmlns:android=">
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
>
<Button
android:id="@+id/timeBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/time"
android:textSize="20sp"
/>
<Button
android:id="@+id/cancelAlarmBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cancelAlarm"
/>
</LinearLayout>
界面的效果如下:
3、修改Alarmjava这个activity,在该Activity中需要做这样几件事:
获取界面上的两个按钮组件,并给其绑定事件监听器
第一个时间按钮,点击后,显示时间选择对话框(TimePicker),供选择小时和分钟,并设置闹钟
第二个按钮,点击之后需要当前设定的闹钟
比较难写的代码就是闹钟设置:
//设置时间
Java代码
timeBtnsetOnClickListener(new ButtonOnClickListener(){
@Override
public void onClick(View arg0) {
Logd(TAG, "click the time button to set time");
calendarsetTimeInMillis(SystemcurrentTimeMillis());
new TimePickerDialog(Alarmthis,new TimePickerDialogOnTimeSetListener() {
@Override
public void onTimeSet(TimePicker arg0, int h, int m) {
//更新按钮上的时间
timeBtnsetText(formatTime(h,m));
//设置日历的时间,主要是让日历的年月日和当前同步
calendarsetTimeInMillis(SystemcurrentTimeMillis());
//设置日历的小时和分钟
calendarset(CalendarHOUR_OF_DAY, h);
calendarset(CalendarMINUTE, m);
//将秒和毫秒设置为0
calendarset(CalendarSECOND, 0);
calendarset(CalendarMILLISECOND, 0);
//建立Intent和PendingIntent来调用闹钟管理器
Intent intent = new Intent(Alarmthis,AlarmReceiverclass);
PendingIntent pendingIntent = PendingIntentgetBroadcast(Alarmthis, 0, intent, 0);
//获取闹钟管理器
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
//设置闹钟
alarmManagerset(AlarmManagerRTC_WAKEUP, calendargetTimeInMillis(), pendingIntent);
alarmManagersetRepeating(AlarmManagerRTC_WAKEUP, calendargetTimeInMillis(), 101000, pendingIntent);
ToastmakeText(Alarmthis, "设置闹钟的时间为:"+StringvalueOf(h)+":"+StringvalueOf(m), ToastLENGTH_SHORT)show();
Logd(TAG, "set the time to "+formatTime(h,m));
}
},calendarget(CalendarHOUR_OF_DAY),calendarget(CalendarMINUTE),true)show();
}
});
代码里面有注释,这里就不多解释了,其中new TimePickerDialog为创建时间选择对话框。为了能够看到效果,我给闹钟添加了重复提醒:alarmManagersetRepeating(AlarmManagerRTC_WAKEUP, calendargetTimeInMillis(), 101000, pendingIntent);。
还要为取消闹钟按钮添加事件监听器:
Java代码
//取消闹钟按钮事件监听
final Button cancelAlarmBtn = (Button)findViewById(RidcancelAlarmBtn);
cancelAlarmBtnsetOnClickListener(new ButtonOnClickListener(){
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Alarmthis,AlarmReceiverclass);
PendingIntent pendingIntent = PendingIntentgetBroadcast(Alarmthis, 0, intent, 0);
//获取闹钟管理器
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManagercancel(pendingIntent);
ToastmakeText(Alarmthis, "闹钟已经取消!", ToastLENGTH_SHORT)show();
}
});
在点击取消闹钟按钮时,取消之前设置的闹钟,核心代码就4行。
4、编写广播接收器,用来接收闹钟的广播事件,然后进行相关处理,
Java代码
public class AlarmReceiver extends BroadcastReceiver {
/ (non-Javadoc)
@see androidcontentBroadcastReceiver#onReceive(androidcontentContext, androidcontentIntent)
/
@Override
public void onReceive(Context arg0, Intent data) {
Logd(AlarmTAG, "the time is up,start the alarm");
ToastmakeText(arg0, "闹钟时间到了!", ToastLENGTH_SHORT)show();
}
}
这个代码就很简单了,主要是要继 承 BroadcastReceiver 这个类,然后重写onRecive方法。onRecive方法在闹钟的时间达到之后会执行,在这里我们可以做自己的事情,比如启动某个程序,或者播放铃声,我这里就是简单的提示一下,使用的是Toast。
5、在android的AndroidManifestxml文件中注册广播接收器:
<manifest xmlns:android=">
Xml代码
package="comqlactivity"
android:versionCode="1"
android:versionName="10">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="AlarmReceiver" android:process=":remote" />
<activity android:name="Alarm"
android:label="@string/app_name">
<intent-filter>
<action android:name="androidintentactionMAIN" />
<category android:name="androidintentcategoryLAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
核心的配置为<receiver android:name="AlarmReceiver" android:process=":remote" />,这也是闹钟程序的关键,如果不做这个配置,那么时间到了之后,闹钟将不会提示。
接下来就是到模拟器上测试,运行截图如上图。程序源代码见附件。
单闹铃就指我们设定了一个闹铃,到点的时候他就会响起,我们只要及时的把它关掉就可以了,但是双闹铃就不通了,他会响一次,在规定的时间内还会再想第2次,我们要重复的关闭才行,有的时候早上起不来就会设定这种双闹铃的模式。单闹铃和双闹铃有着响的次数不同的区别。
双闹钟的含义
双闹钟法顾名思义,就是设置2个闹钟,双保险第一个闹钟设置在你目标起床时间的5分钟之内,比如你想5:30起床,那就设置在5:26。闹钟声音轻软,放在靠近你的床头边上,目的是轻轻叫醒你。第二个闹钟设置在你的目标起床时间。
在平时当第一个闹钟响的时候,你觉得困,还会继续睡。但由于你知道第二闹钟的存在,如果不起床关掉,就会吵到家人甚至邻居,所以你就会自动起床关掉。这样你就能轻松地做到早起了。双闹钟法的核心思想就是:借助外部环境的力量。
若使用的是vivo手机,闹钟铃声设置方法如下:
OriginOS系统:进入闹钟时钟--点击单个闹钟--更多设置--提醒方式--设置铃声即可;
Funtouch OS/iQOO UI系统:进入闹钟时钟--点击需要设置的闹钟--铃声,选择自定义铃声或者系统备选铃声。
方法/步骤:
1、我们在系统桌面点击“Windows图标”之后再点击“开始”界面。
2、然后找到里边的“开始”中找到“闹钟程序”然后再点击“闹钟设置界”细节如下。
如果你没找到,我们只需要搜索“naozhong”来查找对应的应用。
待闹钟应用打开后,然后打开如下图。
3、在时间设置界面中,通过拖动如图所示的两个滑块,即可设置闹钟的时间,如图所示:
4、然后在打开中我们点击“提醒模式”时,可以选择“一次”或“重复”项。
5、设置好了点击“保存”按钮,将设置进行保存。最后我们只需要等待闹钟响起就可以了。
以上就是关于ESP32+时钟、闹钟、温度+microPython程序 (2020-10-09)全部的内容,包括:ESP32+时钟、闹钟、温度+microPython程序 (2020-10-09)、设置手机闹钟、用Android studio做一个可以运行的小程序,闹钟也行,然后可以连到手机,感谢大神。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)