Robojax

Lesson 31: Using BMP280 Temperature Sensor with TM1637 LED Display | Arduino Step by Step Course

Related or required files and link to this lesson

Part 3: Temperature Sensors

In this lesson we learn how to use BMP280 to measure temperature and display it on TM1637 There is separate code for LCD2004 and LCD1602.


 /*
 * 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 donation using PayPal http://robojax.com/L/?id=64
 Written/update 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 download 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 BMEP280 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 andopen-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 
 * Jan 22, 2019 in Ajax, Ontario, Canada
 * getTemp(char type)
 * returns temperature in either C, F or K
 * @param type is 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