【雕爷学编程】Arduino动手做(27)---BMP280温湿度气压传感器模块之带有 SSD1306 OLED 显示屏的温度计

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十七:AHT20+BMP280温湿度气压模块 高精度数字型温湿度大气压强传感器

在这里插入图片描述
在这里插入图片描述

BMP280大气压强传感器模块的实验环境
一、BMP280大气压强传感器模块实验所需硬件清单

TM1637四位数码管X1
0.96寸OLED液晶屏X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
高电平触发有源蜂鸣器模块X1
BMP280大气压强传感器模块X2
LED发光二极管(绿、蓝色)X2
IIC/I2C 1602 LCD液晶屏模块X1
高电平触发单路5V继电器模块X1
Proto Shield原型扩展板(带mini面包板)X1

在这里插入图片描述

程序六:BMP280实时温度声光报警器
(1)实验开源图形编程(Mind+、编玩边学)

在这里插入图片描述

(2)实验串口返回情况

在这里插入图片描述
(3)实验场景图

在这里插入图片描述

程序七:带有 SSD1306 OLED 显示屏的温度计
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序七:带有 SSD1306 OLED 显示屏的温度计
*/

#include <Wire.h>              // 包括 Arduino 线库(I2C 设备需要)
#include <Adafruit_GFX.h>      // 包含 Adafruit 图形库
#include <Adafruit_SSD1306.h>  // 包含 Adafruit SSD1306 OLED 显示驱动
#include <Adafruit_BMP280.h>   // 包含 Adafruit BMP280 传感器库

#define OLED_RESET  4    // 定义显示复位引脚(无此脚可不接)
Adafruit_SSD1306 display(OLED_RESET);  // 初始化 Adafruit 展示库

// 定义设备 I2C 地址:0x76 或 0x77(0x77 为库默认地址)
#define BMP280_I2C_ADDRESS  0x76

Adafruit_BMP280  bmp280;  // 初始化 Adafruit BMP280 库

void setup(void) {
  delay(1000);  //延时1000毫秒

  // 使用 I2C 地址 = 0x3C 初始化 SSD1306 OLED 显示器
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  // 清除显示缓冲区。
  display.clearDisplay();

  display.setTextSize(1);    // 文字大小 = 1
  display.setTextColor(WHITE, BLACK);  // 将文本颜色设置为白色和黑色背景
  display.setCursor(25, 0);            // 将光标移动到位置 (25, 0) 像素
  display.print("BMP280 SENSOR");
  display.display();        // 更新显示

  //初始化BMP280传感器
  if ( bmp280.begin(BMP280_I2C_ADDRESS) == 0 )
  { // 连接错误或设备地址错误!
    display.setTextSize(1);   // 文字大小 = 1
    display.setCursor(5, 17);
    display.print("Connection");
    display.setCursor(35, 37);
    display.print("Error");
    display.display();        // 更新显示
    while (1); // stay here
  }

  display.setCursor(29, 11);
  display.print("TEMPERATURE:");
  display.setCursor(38, 40);
  display.print("PRESSURE:");
  display.display();        // 更新显示
  display.setTextSize(1);   // 文字大小 = 1
}

char _buffer[9];

void loop() {
  // get temperature and pressure from library
  float temp     = bmp280.readTemperature();   // 获取温度
  float pressure = bmp280.readPressure();      // 获得气压

  // 在 LCD 上打印数据
  // 1:打印温度
  if (temp < 0)
    sprintf(_buffer, "-%02u.%02u C", (int)abs(temp), (int)(abs(temp) * 100) % 100 );
  else
    sprintf(_buffer, " %02u.%02u C", (int)temp, (int)(temp * 100) % 100 );
  display.setCursor(11, 21);
  display.print(_buffer);

  // 打印度数符号 (°)
  display.drawCircle(89, 23, 2, WHITE);

  // 2:打印气压
  sprintf(_buffer, "%04u.%02u", (int)(pressure / 100), (int)((uint32_t)pressure % 100));
  display.setCursor(3, 50);
  display.print(_buffer);
  display.setCursor(91, 50);
  display.print("hPa");

  // 更新显示
  display.display();
  delay(1000);  // 延时1000毫秒
}

(2)实验接线示意图

在这里插入图片描述

实验场景图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值