内容介绍
内容介绍
把这次活动的心得放前面吧:
在这次活动中认识了很多大佬,其中也有还在读书的高校学生等,感觉个个都比我厉害,可能我唯一比他们厉害的地方只要长肉了吧 :-(
这次参加Funpack的活动让我意识到硬禾学堂是实实在在注重技术的传播和教学的,也通过这次活动让我知道了硬禾学堂这么优秀的一个平台,相信我后期也会多多参加硬禾学堂的活动的,也请大家多多支持硬禾学堂。
参加这次活动整体感觉不错,从digikey买东西的感觉也不错,但唯一感觉直播的表现不太好,感觉直播太短,没有实际的Demo进行演示。
正文:
----------------------------------------------------
利用该开发板卡的源程序和安卓APP源代码的基础上进行了修改,功能除了采集主要的温度、湿度、光照强度、紫外线、磁场这些数据外,还添加了一个温度的上下阈值的设定,当温度超过设定的阈值范围外则灯亮。
首先看下设置阈值界面的布局样式
下列代码为activity_settings.xml文件内添加的线性布局代码
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/material_listitem_height"
android:background="@color/white">
<RelativeLayout
style="@style/block"
android:layout_centerVertical="true"
android:orientation="horizontal">
<TextView
android:layout_marginStart="@dimen/space_S"
style="@style/tb_robo_regular_14dp_grey"
android:layout_marginTop="@dimen/space_S"
android:text="@string/settings_upper_temperature_limit" />
<EditText
android:id="@+id/temperature_upper"
android:layout_marginEnd="75dp"
android:layout_alignParentEnd="true"
android:inputType="number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</RelativeLayout>
<!-- Model lower -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/material_listitem_height"
android:background="@color/white">
<RelativeLayout
style="@style/block"
android:layout_centerVertical="true"
android:orientation="horizontal">
<TextView
android:layout_marginStart="@dimen/space_S"
style="@style/tb_robo_regular_14dp_grey"
android:layout_marginTop="@dimen/space_S"
android:text="@string/settings_lower_temperature_limit" />
<EditText
android:id="@+id/temperature_lower"
android:layout_marginEnd="75dp"
android:layout_alignParentEnd="true"
android:inputType="number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</RelativeLayout>
下图为展示传感器数据的界面,和原来界面相比并没有坐视觉上的改动,但是对其背后的控制代码做了一些改动,主要是订阅温度值,和判断温度是否超过了所设定的阈值,从而进行动作
下列代码存在settingsActivity.java文件内,主要是用来做设定温度阈值和记忆阈值的作用,可以具体看代码注释
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
ButterKnife.bind(this);
component().inject(this);
setupToolbar();
initHelpDialog();
//设置温度上下限数值
editUpper.setText(String.valueOf(DemoEnvironmentActivity.upper));
editLower.setText(String.valueOf(DemoEnvironmentActivity.lower));
}
@Override
protected void onStop() {
super.onStop();
//保存温度输入上下限数值
DemoEnvironmentActivity.upper = Integer.parseInt(editUpper.getText().toString());
DemoEnvironmentActivity.lower = Integer.parseInt(editLower.getText().toString());
}
下列代码存在于DemoEnvironmentActivity.java文件中,该关键代码主要是创建变量,以及设置我们的温度阈值的初始化值,更重要的是用来判断温度和控制LED灯。
@Override
public String getToolbarString() {
return getString(R.string.demo_environment);
}
//上下限变量,及初始化值
public static int upper = 20;
public static int lower = 0;
//标志位,防止反复一直控制LED灯的亮灭
private boolean isTurn = false;
@Override
public void setTemperature(float temperature, int temperatureType) {
Log.d(TAG, "setTemperature: " + temperature);
//控制LED灯的亮灭
if (temperature>=lower&&temperature<=upper&&isTurn){
presenter.bleManager.ledAction(0); //灭
isTurn = false;
}else if ((temperature<lower||temperature>upper)&&!isTurn){
presenter.bleManager.ledAction(1); //亮
isTurn = true;
}
if (temperatureControl.isEnabled()) {
temperatureControl.setTemperature(temperature, temperatureType);
}
}
附件下载
Funpack第4期可编译下载的代码.txt
因为源代码文件太大,上传不了本平台,所以该附件内有源码的百度网盘下载链接,源代码为Android Studio工程文件
团队介绍
评论
0 / 100
查看更多
猜你喜欢
Funpack第四期:玩转Thunderboard蓝牙开发板学习BLE蓝牙开发,通过Thunderboard BG22蓝牙开发板实现以下实验:
1. 读取板载温度传感器数值;
2. 当温度超过一定门槛,通过蓝牙点亮板载LED灯。
luckydarcy
864
[FUNPACK 第四期][蓝牙] silicon lab client端控制server端小灯程序通过client端查询server端的温度值,当温度大于25度时,通过蓝牙来控制小灯
飞跃1989
464
FastBond2阶段1-基于esp32的智能台灯在二十一世纪物联网飞速发展的时代,智能家居逐步崛起进入我们的日常生活,为我们带来了数不胜数的便利,因此,在本次活动中我推出了智能台灯的设计。
董珈彤
231