0% found this document useful (0 votes)
3 views

THE CODE

This document contains an Arduino sketch that interfaces with a DHT11 temperature and humidity sensor, a BMP280 pressure sensor, and a ST7735 TFT display. It initializes the sensors and displays real-time temperature, humidity, and pressure readings on the TFT screen. The code includes error handling for sensor connection issues and updates the display every second.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

THE CODE

This document contains an Arduino sketch that interfaces with a DHT11 temperature and humidity sensor, a BMP280 pressure sensor, and a ST7735 TFT display. It initializes the sensors and displays real-time temperature, humidity, and pressure readings on the TFT screen. The code includes error handling for sensor connection issues and updates the display every second.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

#include <SPI.

h> //include Serial Peripheral Interface library


#include <Wire.h> //include Two Wire Interface library
#include <Adafruit_GFX.h> // include Adafruit graphics library
#include <Adafruit_ST7735.h> // include Adafruit ST7735 TFT library
#include <Adafruit_BMP280.h> // include Adafruit BMP280 sensor library
#include "DHT.h" //include DHTXX sensor library
#define DHTPIN 2 //DHT11 data pin connected to arduino pin D2
#define DHTTYPE DHT11 //specifying the type of DHT sensor used
#define TFT_RST 8 // TFT RST pin is connected to arduino pin D8
#define TFT_CS 10 // TFT CS pin is connected to arduino pin D9
#define TFT_DC 9 // TFT DC pin is connected to arduino pin D10
// initialize ST7735 SERIES TFT library
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// define device I2C address: 0x76 or 0x77 (0x77 is the library default address)
#define BMP280_I2C_ADDRESS 0x76

Adafruit_BMP280 bmp280; // initialize Adafruit BMP280 library


DHT dht(DHTPIN, DHTTYPE); // initialize DHT sensor

void setup(void)
{
dht.begin(); // synchronizing DHT sensor
tft.initR(INITR_144GREENTAB); // initialize a ST7735S
chip, black tab
tft.fillScreen(ST77XX_BLACK); // setting black background
tft.drawFastHLine(0, 15 , tft.width(), ST77XX_CYAN);// draw horizontal
seperation line at position (0, 15)

tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // set text color to white


and black background
tft.setTextSize(1); // setting text size to 1
//tft.setCursor(4, 0); // move cursor to position
(4, 0) pixel
//tft.print("ARDUINO + ST7735 TFT");
tft.setCursor(25, 5); // move cursor to position
(25, 5) pixel
tft.print("WEATHER BUDDY");

// initialize the BMP280 sensor


if( bmp280.begin(BMP280_I2C_ADDRESS) == 0 )
{ // connection error or device address wrong!
tft.setTextColor(ST77XX_RED, ST77XX_CYAN); // set text color to red
and black background
tft.setTextSize(2); // setting text size to 2
tft.setCursor(5, 76); // move cursor to position
(5, 76) pixel
tft.print("Connection");
tft.setCursor(35, 100); // move cursor to position
(35, 100) pixel
tft.print("Error");
while(1); // stay here
}

tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN); // draw horizontal


seperation line at position (0, 55)pixel
tft.drawFastHLine(0, 95, tft.width(), ST77XX_CYAN); // draw horizontal
seperation line at position (0, 195)pixel
tft.setTextColor(ST77XX_RED, ST77XX_BLACK); // set text color to red
and black background
tft.setCursor(30, 20); // move cursor to position
(30, 20) pixel
tft.print("TEMPERATURE "); // setting heading for
first section
tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // set text color to cyan
and black background
tft.setCursor(40, 60); // move cursor to position
(40, 60) pixel
tft.print("HUMIDITY "); // setting heading for
second section
tft.setTextColor(ST77XX_GREEN, ST7735_BLACK); // set text color to green
and black background
tft.setCursor(40, 100); // move cursor to position
(40, 100) pixel
tft.print("PRESSURE "); // setting heading for
third section
tft.setTextSize(2); // setting text size to 2
}

// main loop
void loop()
{

char _buffer[8];
// read temperature, humidity and pressure from the BMP280 sensor
float temp = bmp280.readTemperature(); // get temperature in °C
float hum = dht.readHumidity(); // get humidity in rH%
float pres = bmp280.readPressure(); // get pressure in hPa

// print temperature (in °C)


if(temp < 0) // if temperature < 0
sprintf( _buffer, "-%02u.%02u", (int)abs(temp), (int)(abs(temp) * 100) %
100 );
else // if temperature >= 0
sprintf( _buffer, " %02u.%02u", (int)temp, (int)(temp * 100) % 100 );//
setting the value approximation
tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK); // set text color to yellow and
black background
tft.setCursor(11, 34); // move cursor to position
(11,34) pixel
tft.print(_buffer); // print temperature from BMP-
280 sensor
tft.drawCircle(89, 34, 2, ST77XX_YELLOW); // print the degree symbol ( ° )
(can be omitted if * is used instead)
tft.setCursor(95, 34); // move cursor to position
(95,34) pixel
tft.print("C"); // print the Celcius symbol

// 2: print humidity (in %)


sprintf( _buffer, "%02u ", (int)(hum)); // setting the value
approximation
tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK); // set text color to magenta
and black background
tft.setCursor(45, 74); // move cursor to position
(45,74) pixel
tft.print(_buffer); // print humidity from DHT-11
sensor
tft.setCursor(75, 74); // move cursor to position
(75,74) pixel
tft.print("%"); // print the percentage symbol

// 3: print pressure (in hPa)


sprintf( _buffer, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres %
100) ); // setting the value approximation
tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK); // set text color to orange and
black background
tft.setCursor(3, 112); // move cursor to position
(3,112)pixel
tft.print(_buffer); // print atmospheric pressure
from BMP-280
tft.setCursor(91, 112); // move cursor to position
(91,112)pixel
tft.print("hPa"); // print unit of atmospheric
pressure as hecto pascal

delay(1000); // wait 1 second before taking


next sensor reading

You might also like