Lesson 31: Using a BMP280 Temperature Sensor with a TM1637 LED Display | Arduino Step-by-Step Course
In this lesson, we learn how to use the BMP280 to measure temperature and display it on the TM1637. There is separate code for the LCD2004 and LCD1602.
517-Lesson 31: Using a BMP280 Temperature Sensor with a TM1637 LED Display | Arduino Step-by-Step Course
语言: C++
/*
* Robojax Arduino Step-by-Step Course
* Part 3: Temperature Sensors
* Lesson 31 BMP280 with TM1637
Please watch video instruction here https://youtu.be/efTu0YjWkXY
This code is available at http://robojax.com/course1/?vid=lecture11
with over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
If you found this tutorial helpful, please support me so I can continue creating.
Make a donation using PayPal: http://robojax.com/L/?id=64
Written/updated by Ahmad Shamshiri in Ajax, Ontario, Canada.
* Code is available at http://robojax.com/learn/arduino
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/***************************************************************************
This is a library for the BMP280 humidity, temperature & pressure sensor
Designed specifically to work with the Adafruit BMP280 Breakout
----> http://www.adafruit.com/products/2651
These sensors use I2C or SPI to communicate; 2 or 4 pins are required
to interface.
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing products
from Adafruit!
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#include <math.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#define BMP_SCK (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS (10)
Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
// start of settings of TM1637 display
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 5
#define DIO 6
TM1637Display display(CLK, DIO);
uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// blank value for all digits
uint8_t allSegment[] = { 0xff, 0xff, 0xff, 0xff };// all segment ON
// start of settings of TM1637 display
void setup() {
Serial.begin(9600);
Serial.println("BMP280 demo by Robojax");
display.setBrightness(0x0f);
if (!bmp.begin()) {
Serial.println("BMP280 Module Error");
while (1);
}
}
void loop() {
// Robojax example Get the code for the course: http://robojax.com/L/?id=339
Serial.print(getTemp('C'));// print Temperature in Celsius
Serial.println(" C");// print C
Serial.print(getTemp('F'));// print Temperature in Celsius
Serial.println(" F");// print F
Serial.print(getTemp('K'));// print Temperature in Kelvin
Serial.println(" K");// print K
Serial.println();
display.setSegments(allSegment);
delay(3000);
display.setSegments(blank);
display.showNumberDec(round(getTemp('C')));
delay(3000);
display.setSegments(blank);
display.showNumberDec(round(getTemp('F')));
delay(3000);
display.setSegments(blank);
display.showNumberDec(round(bmp.readAltitude(1013.25)));
delay(3000);
delay(1000);
}// loop end
/*
* Written by Ahmad Shamshiri
* January 22, 2019 in Ajax, Ontario, Canada
* getTemp(char type)
* returns temperature in either C, F, or K
* @param type is a character of upper case
* C is used to get Celsius
* F is used to get Fahrenheit
* K is used for Kelvin
* Written by Ahmad Shamshiri for Robojax.com
*
*/
float getTemp(char type) {
float c = bmp.readTemperature();//get main temperature in C
float f = c * 9.0 / 5.0 + 32;// convert to fahrenheit
if(type =='F')
{
return f;// fahrenheit
}else if(type =='K')
{
return c + 274.15;// return Kelvin
}else{
return c; //return Celsius
}
}//getTemp ends
资源与参考
-
外部BMP280库(来自GitHub)github.com
-
外部博世网站 BMP280(网站)bosch-sensortec.com
文件📁
没有可用的文件。