内容介绍
内容介绍
- 实现的功能
- 读取温度、湿度传感器,土壤湿度传感器的数据,使用wio terminal终端进行数据值显示。
- 各个功能对应的主要代码片段及说明
- 调用头文件;
#include"TFT_eSPI.h"//添加lcd显示头文件,lcd显示需要
#include "Wire.h"//添加引脚的控制,温湿度传感器需要
#include"DHT.h"//添加温湿度传感器的驱动头文件
- 配置传感器模拟信号采集引脚
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Moisture 传感器部分
int sensorPin = A0;
int sensorValue = 0;
- 配置数字温度、湿度传感器参数
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DHT 传感器部分
#define DHTTYPE DHT20 // 选择DHT型号为DHT 20
DHT dht(DHTTYPE); // DHT10 DHT20 don't need to define Pin
- 配置lcd显示使用的参数
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lcd部分
//#include"Free_Fonts.h" //include the header file
TFT_eSPI tft;//实例化lcd对象
#define Y_CHAR_SIZE 16 //根据使用的font字体高度定义
#define X_CHAR_SIZE 12 //根据使用的font字体宽度定义
//根据font字体高度,分行
#define Y_LINE_0 4
#define Y_LINE_1 36
#define Y_LINE_2 68
#define Y_LINE_3 100
#define Y_LINE_4 132
#define Y_LINE_5 164
#define Y_LINE_6 196
#define Y_LINE_7 228
//根据font字体宽度,分列
#define X_CL_0 12
#define X_CL_1 24
#define X_CL_2 36
#define X_CL_3 48
#define X_CL_4 60
#define X_CL_5 72
#define X_CL_6 84
#define X_CL_7 96
#define X_CL_8 108
#define X_CL_9 120
#define X_CL_10 132
#define X_CL_11 144
#define X_CL_12 156
#define X_CL_13 168
#define X_CL_14 180
#define X_CL_15 192
#define X_CL_16 204
#define X_CL_17 216
#define X_CL_18 228
#define X_CL_19 240
#define X_CL_20 252
#define X_CL_21 264
#define X_CL_22 276
#define X_CL_23 288
#define X_CL_24 300
#define X_CL_25 312
#define X_CL_END 320
//定义提醒位置
#define X_TITLE_WARMING_START X_CL_0
#define X_TITLE_WARMING_END X_CL_END
#define Y_TITLE_WARMING Y_LINE_0
//定义标题位置
#define X_TITLE_DHT_START X_CL_0
#define X_TITLE_DHT_END X_CL_END
#define Y_TITLE_DHT Y_LINE_0
//定义湿度文字位置
#define X_TXT_HUMIDITY_START X_CL_0
#define X_TXT_HUMIDITY_END X_CL_END
#define Y_TXT_HUMIDITY Y_LINE_1
//定义湿度数值位置
#define X_VAL_HUMIDITY_START X_CL_10
#define X_VAL_HUMIDITY_END X_CL_END
#define Y_VAL_HUMIDITY Y_LINE_1
//定义湿度单位位置
#define X_UNI_HUMIDITY_START X_CL_16
#define X_UNI_HUMIDITY_END X_CL_END
#define Y_UNI_HUMIDITY Y_LINE_1
//定义温度文字位置
#define X_TXT_TEMP_START X_CL_0
#define X_TXT_TEMP_END X_CL_END
#define Y_TXT_TEMP Y_LINE_2
//定义温度数值位置
#define X_VAL_TEMP_START X_CL_10
#define X_VAL_TEMP_END X_CL_END
#define Y_VAL_TEMP Y_LINE_2
//定义温度单位位置
#define X_UNI_TEMP_START X_CL_16
#define X_UNI_TEMP_END X_CL_END
#define Y_UNI_TEMP Y_LINE_2
//定义温度文字位置
#define X_TXT_MOISTURE_START X_CL_0
#define X_TXT_MOISTURE_END X_CL_END
#define Y_TXT_MOISTURE Y_LINE_3
//定义温度数值位置
#define X_VAL_MOISTURE_START X_CL_10
#define X_VAL_MOISTURE_END X_CL_END
#define Y_VAL_MOISTURE Y_LINE_3
这里使用了宏定义,是方便lcd的参数调整,不用到代码中去一个个找,然后再修改。
- 初始化函数
//========================================================== setup 初始化
void setup() {
Wire.begin();//初始化引脚
// put your setup code here, to run once:
tft.begin();
tft.setRotation(3);//设置坐标0=左上角;1=右上角;2=右下角;3=左下角
tft.fillScreen(TFT_BLACK);//设置背景为绿色
tft.setTextColor(TFT_WHITE);//设置文字为白色
// tft.setTextSize(1);
// tft.drawString("Hello word!",0,0);
tft.setTextSize(2);//设置字体大小为2号
tft.drawString("DHT/Mois sensor data show",X_TITLE_DHT_START,Y_TITLE_DHT);
// tft.setFreeFont(FF1); //select Free, Mono, Oblique, 12pt.
// tft.drawString("Mono 12pt",70,110);//prints string at (70,110)
dht.begin();//初始化温湿度传感器
tft.drawString("Humidity:",X_TXT_HUMIDITY_START,Y_TXT_HUMIDITY);//显示数据说明
tft.drawString("Temp:",X_TXT_TEMP_START,Y_TXT_TEMP);//显示数据说明
tft.drawString("Moisture:",X_TXT_MOISTURE_START,Y_TXT_MOISTURE);//显示数据说明
}
- 函数主体,主要是采集温度和湿度,并显示
//======================================================== loop 循环
void loop() {
// put your main code here, to run repeatedly:
float temp_hum_val[2] = {0};
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
String myString="";//设置一个空字符串
if (!dht.readTempAndHumidity(temp_hum_val)) {
if(myString.concat(temp_hum_val[0]))
{
tft.fillRect(X_VAL_HUMIDITY_START,Y_VAL_HUMIDITY,X_VAL_HUMIDITY_END-X_VAL_HUMIDITY_START,Y_CHAR_SIZE,TFT_BLACK);//用填充清屏
tft.drawString(myString,X_VAL_HUMIDITY_START,Y_VAL_HUMIDITY);
tft.drawString("%",X_UNI_HUMIDITY_START,Y_UNI_HUMIDITY);
}
myString="";//清空字符串
if(myString.concat(temp_hum_val[1]))
{
tft.fillRect(X_VAL_TEMP_START,Y_VAL_TEMP,X_VAL_TEMP_END-X_VAL_TEMP_START,Y_CHAR_SIZE,TFT_BLACK);//用填充清屏
tft.drawString(myString,X_VAL_TEMP_START,Y_VAL_TEMP);
tft.drawString("*C",X_UNI_TEMP_START,Y_UNI_TEMP);
}
// debug.print(temp_hum_val[0]);
// debug.print(" %\t");
// debug.print("Temperature: ");
// debug.print(temp_hum_val[1]);
// debug.println(" *C");
} else {
tft.fillScreen(TFT_BLACK);//用黑色填充清屏
tft.drawString("read Humidity fail!",X_TITLE_WARMING_START,Y_TITLE_WARMING);
//debug.println("Failed to get temprature and humidity value.");
}
//------------------------------------------------- Moisture 传感器
sensorValue = analogRead(sensorPin);
myString="";//清空字符串
if(myString.concat(sensorValue))
{
tft.fillRect(X_VAL_MOISTURE_START,Y_VAL_MOISTURE,X_VAL_MOISTURE_END-X_VAL_MOISTURE_START,Y_CHAR_SIZE,TFT_BLACK);//用填充清屏
tft.drawString(myString,X_VAL_MOISTURE_START,Y_VAL_MOISTURE);
//tft.drawString("*C",X_UNI_TEMP_START,Y_UNI_TEMP);
}
delay(1500);
}
主要是调用库函数,获取数据,并转换成字符串,然后调用lcd的字符显示库函数,进行绘制。
- 功能展示及说明
- 显示效果
- 本活动的心得体会
- wio terminal和arduino开发环境非常好用
- 这是第二次参加电子森林,加深了对学习平台的了解,比如电子森林和硬禾、B站等。
附件下载
data_show.zip
团队介绍
成员1人,从事半导体嵌入式应用开发
团队成员
Devin
评论
0 / 100
查看更多
猜你喜欢
Funpack第12期-将传感器采集的数据在Wio Terminal上显示使用Wio Terminal 连接 MQ-2气敏式烟雾传感器(甲烷 液化气可燃气体),MQ-3(酒精乙醇传感器),DS18B20(温度传感器),读取数据并在LCD屏幕上实时更新。
沈同学
1152
Funpack第12期 Wio Terminal传感器数据采集器Funpack第12期 基于Wio Terminal的数据采集器,连接4中传感器,采集数据并显示在屏幕上。
llzx
1271
Funpack第12期之Wio Terminal传感器数据采集LCD屏幕显示Funpack第12期活动项目,使用Wio Terminal的扩展接口完成了任务一:利用扩展接口,自由选择连接三到五个传感器,并将采集的数据显示在LCD屏幕上,并解释数据的含义。
eelover
1469