TA的每日心情 | 开心 12 小时前 |
---|
签到天数: 303 天 连续签到: 34 天 [LV.8]以坛为家I
|
最近天气变化挺大,自制了一个温湿度计
【材料】
1、DFR0654开发板
2、OLED显示屏
3、SHT31温湿度计
【实现步骤】
1、安装ssd1306驱动库GyverOLED.
2、安装sht31驱动库SHT31。
【代码实现】
- // дефайн перед подключением либы - использовать microWire (лёгкая либа для I2C)
- //#define USE_MICRO_WIRE
- // дефайн перед подключением либы - скорость SPI
- //#define OLED_SPI_SPEED 4000000ul
- #include <GyverOLED.h>
- #include "Wire.h"
- #include "SHT31.h"
- #define SHT31_ADDRESS 0x44
- uint32_t start;
- uint32_t stop;
- SHT31 sht;
- GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
- void setup() {
- Serial.begin(115200);
- oled.init(); // инициализация
- // --------------------------
- // настройка скорости I2C
- //Wire.setClock(800000L); // макс. 800'000
- // --------------------------
- oled.clear(); // очистить дисплей (или буфер)
- oled.update(); // обновить. Только для режима с буфером! OLED_BUFFER
- // --------------------------
- oled.home(); // курсор в 0,0
- oled.setScale(2);
- oled.print("SHT31 Dmo!"); // печатай что угодно: числа, строки, float, как Serial!
- oled.update();
- delay(2000);
- Wire.begin();
- Wire.setClock(100000);
- sht.begin();
- uint16_t stat = sht.readStatus();
- Serial.print(stat, HEX);
- Serial.println();
-
- }
- void loop() {
- sht.read(); // default = true/fast slow = false
- Serial.print("\t");
- Serial.print(sht.getTemperature(), 1);
- Serial.print("\t");
- Serial.println(sht.getHumidity(), 1);
- delay(100);
- oled.setCursor(0, 3); // курсор в (пиксель X, строка Y)
- oled.print("TEMP:");
- oled.setCursor(64, 3); // курсор в (пиксель X, строка Y)
- oled.print(sht.getTemperature());
-
- oled.setCursor(0, 6); // курсор в (пиксель X, строка Y)
- oled.print("HUMI:");
- oled.setCursor(64, 6); // курсор в (пиксель X, строка Y)
- oled.print(sht.getHumidity());
- oled.update();
- delay(2000);
- }
复制代码 【实现效果】
sht31_demo.zip
(957 Bytes, 下载次数: 0)
|
|