引言除了“ Hello world!”,两行屏幕上可以显示什么? 为什么不显示温度湿度和压力?
用作arduino训练辅助的传感器(DHT11,DHT22)显示温度和湿度。 为了教育目的(对于大学),必须以相同的方式观察压力。 自然地,部门有一个晴雨表,但是为什么不自己收集呢? 此外,您可以在自动模式下进一步积累读数,这是学习arduino的良好经验。
一种或另一种方式是从中国订购组件,然后组装了该设备。
必要组件Arduino Pro迷你版用于LCD的I2C (可以立即订购,但价格便宜一些)
液晶屏1602BME280USB-UART用于将草图发送到arduino。 也可以使用Raspberry Pi或带有COM端口的计算机。
固件和程序代码的连接图USB-UART来自中国,带有一组接线:

他们足够了。 尽管我的arduino版本由5伏特供电,但我仍将跳线设为3.3伏特。
UART-Arduino的
5v-VCC
TXD-RXD
RXD-TXD
地-地
CTS-DTR(可选,对我不起作用,可能是因为信号电压仍然为3.3V)
如果未连接DTR,则在发送arduino固件后,需要使用内置按钮重新启动,在固件成功下载后,固件将在两侧开始进行活动数据交换(如USB-UART LED所示),它将自动重新启动。
必要的第三方库:
英国威廉希尔SparkFunBME280液晶I2C直接编写代码,并附带示例注释(以防有人需要更改某些内容)。
代号#include <stdint.h> #include "SparkFunBME280.h" #include "Wire.h" #include "SPI.h" #include <LiquidCrystal_I2C.h> //Global sensor object BME280 mySensor; LiquidCrystal_I2C lcd(0x3F,16,2); // , 0x3F void setup() { lcd.init(); lcd.backlight(); //***Driver settings********************************// //commInterface can be I2C_MODE or SPI_MODE //specify chipSelectPin using arduino pin names //specify I2C address. Can be 0x77(default) or 0x76 //For I2C, enable the following and disable the SPI section mySensor.settings.commInterface = I2C_MODE; mySensor.settings.I2CAddress = 0x76; // , //For SPI enable the following and dissable the I2C section //mySensor.settings.commInterface = SPI_MODE; //mySensor.settings.chipSelectPin = 10; //***Operation settings*****************************// //renMode can be: // 0, Sleep mode // 1 or 2, Forced mode // 3, Normal mode mySensor.settings.runMode = 3; // Forced mode, Normal mode //tStandby can be: // 0, 0.5ms // 1, 62.5ms // 2, 125ms // 3, 250ms // 4, 500ms // 5, 1000ms // 6, 10ms // 7, 20ms mySensor.settings.tStandby = 5; // //filter can be off or number of FIR coefficients to use: // 0, filter off // 1, coefficients = 2 // 2, coefficients = 4 // 3, coefficients = 8 // 4, coefficients = 16 mySensor.settings.filter = 0; //tempOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.tempOverSample = 1; //pressOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.pressOverSample = 1; //humidOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.humidOverSample = 1; //Calling .begin() causes the settings to be loaded mySensor.begin(); } void loop() { // , , . lcd.setCursor(0,0); lcd.print("H="); lcd.print((uint8_t)mySensor.readFloatHumidity()); lcd.print("%"); lcd.print(" T="); lcd.print(mySensor.readTempC()); lcd.setCursor(13,0); lcd.print(" P:"); lcd.setCursor(0,1); int mmH=mySensor.readFloatPressure()/133; lcd.print(mmH); lcd.print("mmH "); lcd.print(mySensor.readFloatPressure()); lcd.setCursor(14,1); lcd.print("Pa"); delay(1000); }
传感器地址可以猜测,只有两个。
如何找到您的显示器地址,请
点击此处 。 根据芯片,有两个板。
在这种情况下:
并且地址将是0x3F,因为 A0-A2打开:

椭圆形的圆圈中的LED
更容易蒸发。
接线图选择该电阻器作为传感器电阻的一半(在VVC和GND之间),以便其上的电压降为1.7伏。 同样,电路可以由RAW输入,其他电压(例如,从表冠)供电。

该照片显示,为紧凑起见,您可以为传感器加电并从另一个引脚进行显示。 它还显示了一条橙黄色电线对的分支,一根100欧姆的电阻器挂在其上,以降低背光灯的亮度(您可以离开跳线,但会割伤您的眼睛)。

就我而言,一切都由旧的计算机电源供电。 可以通过USB供电。 所有组件都用即将到来的Moment胶粘合。
总结在工作场所出现了用螺栓固定在桌子上的1602,该桌子显示了压力,湿度和温度。 可以在不删除Arduino的情况下对其进行刷新(
它可能会变成蠕变线 )。