亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

AWS - Arduino 气象站

组件和用品

Arduino UNO
× 1
USB-A 转 Micro-USB 线缆
× 1
面包板(通用)
× 1
跳线(通用)
× 1
有机玻璃 4 毫米
× 1
电阻 221 ohm
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
× 1
Maxim Integrated DS1307 64 x 8,串行,I²C 实时时钟
× 1
光敏电阻
× 1
DHT11 温湿度传感器(4 针)
× 1
温度传感器
× 1
红外接收器(通用)
× 1
水位传感器
× 1
Sun Founder 入门 RFID 套件
× 1

必要的工具和机器

激光切割机(通用)

关于这个项目

AWS,Arduino 气象站,为环境提供准确的全天候数据。特别是基于Arduino微控制器开发板,支持全卡式传感器环境分析。

宗旨

该控件的目的是通过上述传感器检测一系列数据,并通过 LCD 屏幕将其与用户交互。项目“硬件”的体积很小,可以将其封闭在用激光切割机制成的小盒子中。

使用的传感器

水位和雪位传感器

水位指示器用于指示高架水箱中的水位,利用它可以避免水溢出,随时了解水箱中的水位。

DHT11温湿度传感器

DHT11数字温湿度传感器是经过校准的数字信号输出温湿度组合传感器,其专用模块捕捉技术和数字温湿度传感器技术确保产品具有高可靠性和优异的长期稳定性。该产品具有品质优良、响应速度快、抗干扰能力强、成本低等优点。

光敏电阻

光敏电阻,也称为光敏电阻 (LDR),是一种光敏器件,最常用于指示光的存在与否,或测量光强度。在黑暗中,它们的电阻非常高,但当 LDR 传感器暴露在光线下时,电阻会急剧下降,甚至下降到几欧姆,具体取决于光照强度。

LCD I2C 1602显示

LCD1602带有I2C总线是一种串行总线。它是一种高性能串行总线,具有多主机系统所需的总线规则和高速或低速设备同步功能。 I2C LCD1602上的蓝色电位器只用于背光。

I2C 仅使用两条双向开漏线,串行数据线 (SDA) 和串行时钟线 (SCL),通过电阻上拉。使用的典型电压为 +5 V 或 +3.3 V,但允许使用其他电压的系统。

DS1302 实时时钟模块

它基于集成的 DS1302,内部有一个实时时钟/日历和 31 字节的静态 RAM。您可以看到时间格式为 hh/mm/ss,而日期格式为 yyyy/mm/dd。

LM35 温度传感器

LM35 精密温度传感器是一种以非常准确的方式检测温度的传感器。模数转换器 (ADC) 根据公式 ADCValue =样本 * 1024 / 参考电压 (+5v) 将模拟值转换为数字近似值。因此,对于 +5 伏参考,数字近似值将 =输入电压 * 205。

红外接收器和遥控器

这两个组件协同工作:ir 接收器允许从遥控器接收数据。数据取决于您要按下的按钮。已选择以下按钮以将它们分配给特定功能:

  • 0 按钮:您可以在 LCD 屏幕上看到时间和日期。
  • 1 按钮:您可以在 LCD 屏幕上看到 LM35 的温度数据和 DHT11 的湿度数据。
  • 2 按钮:您可以在 LCD 屏幕上看到暗度百分比。
  • 3 按钮:您可以在 LCD 屏幕上看到液位 (mm) 值。
  • “循环”按钮:您可以看到彼此间隔 4 秒的所有屏幕。

A.W.S.

第1步:构建盒子

在考虑了项目规模后,我们着手进行有机玻璃箱的建造。面部尺寸及其相关联锁座和传感器线出口孔是用 Autocad 软件设计的,然后我们用激光切割机切割了面部。最后我们用强力胶把所有东西都组装好了。

第 2 步:原理图和硬件连接

这是 Arduino 气象站的示意图。它已经用fritzing软件完成了。连接相当简单。

第 3 步:Arduino 编程

我们已经在 Arduino IDE 上完成了代码,使用了我们需要的所有库并对其进行了编程,以便我们的气象站按我们想要的方式运行。

第 4 步:如何 作品

AWS(Arduino 气象站 ) 是一个气象站,它从环境中获取一些数据,并通过使用红外遥控器让它们有可能看到。为了将它们与用户交互,它有一个 LCD 显示屏,用户可以在五个不同的屏幕上互换。

这些是屏幕:

1. 主屏幕: 它是我们打开电路板时用户可以看到的第一个屏幕。它用“Arduino 气象站”这个词来展示项目,它具有特殊的褪色效果。每次您要求 AWS 查看一些数据后,您也可以看到此屏幕。

2. 日期和时间屏幕: 这是用户可以访问的第一个屏幕,只需按遥控器上的 0 按钮即可。按下时,屏幕会延迟 10 秒,然后返回主屏幕。

3. 温湿度屏幕: 它是显示 DHT11 和 LM35 传感器分别接收到的有关湿度和温度的数据的屏幕。连接到遥控器上的1按钮,按下时屏幕有10秒的延迟,然后返回主屏幕。

4. 暗屏: 屏幕提供 LDR 接收到的有关传感器上光量的数据。它显示传感器上的黑暗百分比。它连接到遥控器上的 2 按钮,按下时屏幕会延迟 10 秒,然后返回主屏幕。

5. 液位屏幕: 该屏幕给出了配方中一定量流体的高度。连接到遥控器上的3按钮,按下时屏幕有10秒的延迟,然后返回主屏幕。

通过按循环按钮,可以以 4 秒的时间间隔连续查看最后四个屏幕 在遥控器上。在这种模式下,只执行一圈信息。

注意事项

要使该项目具有良好的使用寿命,首先要考虑的是避免液体或其他有害物质与电路板和站台的任何接触。

降水后必须清空水容器,检查并清洁传感器。

充电电池的续航时间大约是两天,所以要放电需要充电(大约2小时)。

可能有时红外传感器的运行效果不如我们希望的那样好,因此它的功能可能会在低温(约 0 度)下中断。不代表有什么问题,其实只要打开盒子按一下reset键就可以了:AWS又可以正常工作了。

如果我们按下复位按钮,RTC DS1302 模块不会改变他的日期和时间值,这要归功于模块中的支持电池可以使用大约 10 年。

如果移除 AWS 电源,日期和时间将更改。要解决此问题,必须根据您的喜好在列表中指示的位置重新设置它们。加载后,您需要将设置隐藏到程序中,如下所示。

Before:Time t(2017, 12, 03, 10, 15, 00, 1);rtc.time(t);After://Time t(2017, 12, 03, 10, 15, 00, 1)//;rtc.time(t); 

代码

//包含草图库#include #include  //clock library#include  //clock library#include  //clock library#include  //dht11 library#include  //LCD library#include  //Wire for LCD library#define lmPin A1 //LM35 附加到 A1LiquidCrystal_I2C lcd(0x27, 16, 2); // 将 LCD 地址设置为 0x27,用于 16 个字符和 2 行 displaydht DHT; //创建一个变量类型dhtconst int DHT11_PIN =4; //将dht11附加到引脚4const int waterSensor =0; //设置水传感器变量int waterValue =0; //水传感器变量int mmwaterValue =0;int sensorPin =A3; // 选择电位器的输入引脚int luce =0; // ldrint plce 的变量 =0; // ldrfloat 的变量 tem =0; //温度变量 lmVal =0; //LM35的变量//irconst int irReceiverPin =3;IRrecvirrecv(irReceiverPin); //创建一个类型为IRrecvdecode_results的变量;//定义时钟变量uint8_t RST_PIN =5; //RST 引脚附加 touint8_t SDA_PIN =6; //IO 引脚附加 touint8_t SCL_PIN =7; //clk Pin attach to/* Create buffers */char buf[50];char day[10];/* 创建一个DS1302对象*/DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//创建一个DS1302void的变量类型print_time(){ /* 从芯片中获取当前时间和日期 */ Time t =rtc.time(); /* 命名星期几 */ memset(day, 0, sizeof(day)); switch (t.day) { case 1:strcpy(day, "Sun");休息;情况 2:strcpy(day, "Mon");休息;情况 3:strcpy(day, "Tue");休息;案例 4:strcpy(day, "Wed");休息;案例 5:strcpy(day, "Thu");休息;案例 6:strcpy(day, "Fri");休息;案例 7:strcpy(day, "Sat");休息; } /* 格式化时间和日期并插入临时缓冲区 */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. yr、t.mon、t.date、t.hr、t.min、t.sec); /* 将格式化的字符串打印为串行,以便我们可以看到时间 */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.yr); lcd.print("-"); lcd.print(t.mon / 10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.date / 10); lcd.print(t.date % 10);液晶打印(“”);液晶打印(天); lcd.setCursor(4, 1);液晶打印(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec / 10); lcd.print(t.sec % 10);}void setup() { //clock Serial.begin(9600); rtc.write_protect(false); rtc.halt(假); //ir irrecv.enableIRIn(); //启用红外接收模块lcd.init(); //初始化液晶lcd.backlight(); //开启背光pinMode(sensorPin, INPUT); Time t(2017, 12, 03, 10, 15, 00, 1);//初始化时间 /* 设置芯片上的时间和日期 */ rtc.time(t);}void loop() { lcd. setCursor(0, 0);液晶打印(“A”);延迟(50); lcd.setCursor(1, 0);液晶打印(“r”);延迟(50); lcd.setCursor(2, 0); lcd.print("d");延迟(50); lcd.setCursor(3, 0);液晶打印(“你”);延迟(50); lcd.setCursor(4, 0);液晶打印(“我”);延迟(50); lcd.setCursor(5, 0); lcd.print("n");延迟(50); lcd.setCursor(6, 0);液晶打印(“o”);延迟(50); lcd.setCursor(8, 0);液晶打印(“W”);延迟(50); lcd.setCursor(9, 0); lcd.print("e");延迟(50); lcd.setCursor(10, 0); lcd.print("a");延迟(50); lcd.setCursor(11, 0); lcd.print("t");延迟(50); lcd.setCursor(12, 0); lcd.print("h");延迟(50); lcd.setCursor(13, 0); lcd.print("e");延迟(50); lcd.setCursor(14, 0);液晶打印(“r”);延迟(50); lcd.setCursor(4, 1);液晶打印(“S”);延迟(50); lcd.setCursor(5, 1); lcd.print("t");延迟(50); lcd.setCursor(6, 1); lcd.print("a");延迟(50); lcd.setCursor(7, 1); lcd.print("t");延迟(50); lcd.setCursor(8, 1);液晶打印(“我”);延迟(50); lcd.setCursor(9, 1);液晶打印(“o”);延迟(50); lcd.setCursor(10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) //如果红外接收模块接收数据 { if (results.value ==0xFF6897) //如果“0”被推入 print TIME{ lcd.clear(); //清除液晶屏 print_time();延迟(10000); //延迟10000ms lcd.clear(); //清除LCD延迟(200); //稍等片刻irrecv.resume(); // 接收下一个值}if (results.value ==0xFF30CF) //如果推送“1” print TEMPERATURE and HUMIDITY{ lcd.clear(); //清除LCD //读取DHT的数据 int chk =DHT.read11(DHT11_PIN); // 显示数据 lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//读取A1的值 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//打印单位"?" lcd.print("C"); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("嗡嗡声:"); //Serial.print("嗡嗡声:");液晶打印(DHT.湿度,1); //在液晶显示器上打印湿度 //Serial.print(DHT.humity,1); lcd.print("%"); //Serial.println(" %");延迟(10000); //等待 3000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻irrecv.resume(); // 接收下一个值}if (results.value ==0xFF18E7) //如果“2”被推入打印 DARKNESS{ lcd.clear(); //清除LCD lcd.setCursor(4, 0); //将光标放在第 4 列第 1 行 lcd.print("Darkness:");卢斯 =模拟读取(sensorPin); //读取ldr pluce =map(luce, 0, 1023, 0, 100); //将传感器的值转换为0到100之间的值 lcd.setCursor(6, 1); //将光标放在液晶显示器的中间 lcd.print(plice); //打印百分比lcd.print("%"); //打印符号延迟(10000); //延迟 10000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻irrecv.resume(); // 接收下一个值}if (results.value ==0xFF7A85) //如果“3”被推入打印雪或水位{ lcd.clear(); //清除LCD lcd.setCursor(0, 0); //将光标放在第 0 列第 1 行 lcd.print("Fluid level(mm):"); //打印“液位(毫米):” int waterValue =analogRead(waterSensor); // 获取水传感器值 lcd.setCursor(6, 1); //将光标放在第 6 列第 2 行 mmwaterValue =map(waterValue, 0, 1023, 0, 40);液晶打印(毫米水值); //液晶显示器上显示的值 delay(10000); //延迟10000ms lcd.clear(); //清除LCD延迟(200);简历.resume(); // 接收下一个值}if (results.value ==0xFF9867) //if (results.value ==0xFF9867) //if "PRESENTATION" 被推送 打印 TIME, TEM and HUM, DARKNESS and S or W LEVEL一次{ lcd.clear(); //清除液晶屏 print_time();延迟(4000); //延迟10000ms lcd.clear(); //清除LCD延迟(200); //稍等片刻 //读取DHT的数据 int chk =DHT.read11(DHT11_PIN); // 显示数据 lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//读取A0的值 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//打印单位"?" lcd.print("C"); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("嗡嗡声:"); //Serial.print("嗡嗡声:");液晶打印(DHT.湿度,1); //在液晶显示器上打印湿度 //Serial.print(DHT.humity,1); lcd.print("%"); //Serial.println(" %");延迟(4000); //等待 3000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻 lcd.setCursor(4, 0); //将光标放在第 4 列第 1 行 lcd.print("Darkness:");卢斯 =模拟读取(sensorPin); //读取ldr pluce =map(luce, 0, 1023, 0, 100); //将传感器的值转换为0到100之间的值 lcd.setCursor(6, 1); //将光标放在液晶显示器的中间 lcd.print(plice); //打印百分比lcd.print("%"); //打印符号延迟(4000); //延迟 10000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻 lcd.setCursor(0, 0); //将光标放在第 0 列第 1 行 lcd.print("Fluid level(mm):"); //打印“液位(毫米):” int waterValue =analogRead(waterSensor); // 获取水传感器值 lcd.setCursor(6, 1); //将光标放在第 6 列第 2 行 mmwaterValue =map(waterValue, 0, 1023, 0, 40);液晶打印(毫米水值); //液晶显示器上显示的值 delay(4000); //延迟10000ms lcd.clear(); //清除LCD延迟(200);简历.resume(); // 接收下一个值}}}  

不是每个字母写“Arduino Weather Station”字母,而是可以用 “切换/案例”模式。

结论

我们用Arduino做了一个气象站,它考虑了当前的日期和时间,并提取了一些环境数据,将它们打印在由红外遥控器控制的液晶屏上。

代码

  • AWS 代码.ino
AWS code.inoC/C++
//包含草图库#include #include  //clock library#include  //clock library#include  //clock library#include  //dht11 library#include  //LCD library#include  //Wire for LCD library#define lmPin A1 //LM35 attach to A1LiquidCrystal_I2C lcd(0x27, 16, 2 ); // 将 LCD 地址设置为 0x27,用于 16 个字符和 2 行 displaydht DHT; //创建一个变量类型dhtconst int DHT11_PIN =4; //将dht11附加到引脚4const int waterSensor =0; //设置水传感器变量int waterValue =0; //水传感器变量int mmwaterValue =0;int sensorPin =A3; // 选择电位器的输入引脚int luce =0; // ldrint plce 的变量 =0; // ldrfloat 的变量 tem =0; //温度变量 lmVal =0; //LM35的变量//irconst int irReceiverPin =3;IRrecvirrecv(irReceiverPin); //创建一个类型为IRrecvdecode_results的变量;//定义时钟变量uint8_t RST_PIN =5; //RST 引脚附加 touint8_t SDA_PIN =6; //IO 引脚附加 touint8_t SCL_PIN =7; //clk Pin attach to/* Create buffers */char buf[50];char day[10];/* 创建一个DS1302对象*/DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//创建一个DS1302void的变量类型print_time(){ /* 从芯片中获取当前时间和日期 */ Time t =rtc.time(); /* 命名星期几 */ memset(day, 0, sizeof(day)); switch (t.day) { case 1:strcpy(day, "Sun");休息;情况 2:strcpy(day, "Mon");休息;情况 3:strcpy(day, "Tue");休息;案例 4:strcpy(day, "Wed");休息;案例 5:strcpy(day, "Thu");休息;案例 6:strcpy(day, "Fri");休息;案例 7:strcpy(day, "Sat");休息; } /* 格式化时间和日期并插入临时缓冲区 */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. yr、t.mon、t.date、t.hr、t.min、t.sec); /* 将格式化的字符串打印为串行,以便我们可以看到时间 */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.yr); lcd.print("-"); lcd.print(t.mon / 10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.date / 10); lcd.print(t.date % 10);液晶打印(“”);液晶打印(天); lcd.setCursor(4, 1);液晶打印(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec / 10); lcd.print(t.sec % 10);}void setup() { //clock Serial.begin(9600); rtc.write_protect(false); rtc.halt(假); //ir irrecv.enableIRIn(); //启用红外接收模块lcd.init(); //初始化液晶lcd.backlight(); //开启背光pinMode(sensorPin, INPUT); Time t(2017, 12, 9, 11, 20, 00, 7);//初始化时间 /* 设置芯片上的时间和日期 */ rtc.time(t);}void loop() { lcd. setCursor(0, 0);液晶打印(“A”);延迟(50); lcd.setCursor(1, 0);液晶打印(“r”);延迟(50); lcd.setCursor(2, 0); lcd.print("d");延迟(50); lcd.setCursor(3, 0);液晶打印(“你”);延迟(50); lcd.setCursor(4, 0);液晶打印(“我”);延迟(50); lcd.setCursor(5, 0); lcd.print("n");延迟(50); lcd.setCursor(6, 0);液晶打印(“o”);延迟(50); lcd.setCursor(8, 0);液晶打印(“W”);延迟(50); lcd.setCursor(9, 0); lcd.print("e");延迟(50); lcd.setCursor(10, 0); lcd.print("a");延迟(50); lcd.setCursor(11, 0); lcd.print("t");延迟(50); lcd.setCursor(12, 0); lcd.print("h");延迟(50); lcd.setCursor(13, 0); lcd.print("e");延迟(50); lcd.setCursor(14, 0);液晶打印(“r”);延迟(50); lcd.setCursor(4, 1);液晶打印(“S”);延迟(50); lcd.setCursor(5, 1); lcd.print("t");延迟(50); lcd.setCursor(6, 1); lcd.print("a");延迟(50); lcd.setCursor(7, 1); lcd.print("t");延迟(50); lcd.setCursor(8, 1);液晶打印(“我”);延迟(50); lcd.setCursor(9, 1);液晶打印(“o”);延迟(50); lcd.setCursor(10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) //如果红外接收模块接收数据 { if (results.value ==0xFF6897) //如果“0”被推入 print TIME{ lcd.clear(); //清除液晶屏 print_time();延迟(10000); //延迟10000ms lcd.clear(); //清除LCD延迟(200); //稍等片刻irrecv.resume(); // 接收下一个值}if (results.value ==0xFF30CF) //如果推送“1” print TEMPERATURE and HUMIDITY{ lcd.clear(); //清除LCD //读取DHT的数据 int chk =DHT.read11(DHT11_PIN); // 显示数据 lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//读取A1的值 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//打印单位" " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("嗡嗡声:"); //Serial.print("嗡嗡声:");液晶打印(DHT.湿度,1); //在液晶显示器上打印湿度 //Serial.print(DHT.humity,1); lcd.print("%"); //Serial.println(" %");延迟(10000); //等待 3000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻irrecv.resume(); // 接收下一个值}if (results.value ==0xFF18E7) //如果推送“2”打印 DARKNESS{ lcd.clear(); //清除LCD lcd.setCursor(4, 0); //将光标放在第 4 列第 1 行 lcd.print("Darkness:");卢斯 =模拟读取(sensorPin); //读取ldr pluce =map(luce, 0, 1023, 0, 100); //将传感器的值转换为0到100之间的值 lcd.setCursor(6, 1); //将光标放在液晶显示器的中间 lcd.print(plice); //打印百分比lcd.print("%"); //打印符号延迟(10000); //延迟 10000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻irrecv.resume(); // 接收下一个值}if (results.value ==0xFF7A85) //如果“3”被推入打印雪或水位{ lcd.clear(); //清除LCD lcd.setCursor(0, 0); //将光标放在第 0 列第 1 行 lcd.print("Fluid level(mm):"); //打印“液位(毫米):” int waterValue =analogRead(waterSensor); // 获取水传感器值 lcd.setCursor(6, 1); //将光标放在第 6 列第 2 行 mmwaterValue =map(waterValue, 0, 1023, 0, 40);液晶打印(毫米水值); //液晶显示器上显示的值 delay(10000); //延迟10000ms lcd.clear(); //清除LCD延迟(200);简历.resume(); // 接收下一个值}if (results.value ==0xFF9867) //if (results.value ==0xFF9867) //if "PRESENTATION" 被推送 打印 TIME, TEM and HUM, DARKNESS and S or W LEVEL一次{ lcd.clear(); //清除液晶屏 print_time();延迟(4000); //延迟10000ms lcd.clear(); //清除LCD延迟(200); //稍等片刻 //读取DHT的数据 int chk =DHT.read11(DHT11_PIN); // 显示数据 lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//读取A0的值 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//打印单位" " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("嗡嗡声:"); //Serial.print("嗡嗡声:");液晶打印(DHT.湿度,1); //在液晶显示器上打印湿度 //Serial.print(DHT.humity,1); lcd.print("%"); //Serial.println(" %");延迟(4000); //等待 3000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻 lcd.setCursor(4, 0); //将光标放在第 4 列第 1 行 lcd.print("Darkness:");卢斯 =模拟读取(sensorPin); //读取ldr pluce =map(luce, 0, 1023, 0, 100); //将传感器的值转换为0到100之间的值 lcd.setCursor(6, 1); //将光标放在液晶显示器的中间 lcd.print(plice); //打印百分比lcd.print("%"); //打印符号延迟(4000); //延迟 10000 毫秒 lcd.clear(); //清除LCD延迟(200); //稍等片刻 lcd.setCursor(0, 0); //将光标放在第 0 列第 1 行 lcd.print("Fluid level(mm):"); //打印“液位(毫米):” int waterValue =analogRead(waterSensor); // 获取水传感器值 lcd.setCursor(6, 1); //将光标放在第 6 列第 2 行 mmwaterValue =map(waterValue, 0, 1023, 0, 40);液晶打印(毫米水值); //液晶显示器上显示的值 delay(4000); //延迟10000ms lcd.clear(); //清除LCD延迟(200);简历.resume(); // 接收下一个值}}}

定制零件和外壳

box_a5et5f4U9F.dwg

示意图

aws_DMDwb4iUZp.fzz

制造工艺

  1. Weather Station V 2.0
  2. TinyML-Language Detector-基于 Edge Impulse &Arduino
  3. Arduino Gyroscope Game with MPU-6050
  4. 6-Shooter:Arduino 饮料混合站
  5. Arduino 数字骰子
  6. 找到我
  7. Arduino Audio Reactive Desk Light
  8. Arduino Powered Weather Balloon Datalogger
  9. $10 便携式 Arduino 气象站 (AWS)
  10. NeoMatrix Arduino Pong
  11. ThingSpeak Arduino 气象站
  12. 当地气象站