Arduino Geef temperatuur en vochtigheid weer op het OLED-display

Uit Private Rotor Designs
Naar navigatie springen Naar zoeken springen
Crystal Clear action run.png
LCD I2C

Release status: Tutorial

Tuttorial-000.png
Description
Arduino Geef temperatuur en vochtigheid weer op het OLED-display
License
Author
Contributors
Based-on
[[]]
Categories
CAD Models
External Link
[]


Inleiding

In deze totorial bouwen we een project dat temperatuur- en vochtigheidsmetingen weergeeft op het OLED-display. We krijgen temperatuur en vochtigheid met behulp van een DHT11/22 temperatuur- en vochtigheidssensor. Als u niet bekend bent met de DHT11-sensor, lees dan het volgende artikel: (volgt)

Aansluitschema

Monteer het circuit door het volgende schema te volgen. DHT22-240530.png

foto opgebouwd

Sketch

/******************************************************************************
  (c) Harry H. Arends
Compleet project http://rotor.harry-arends.nl/index.php?title=Arduino_Geef_temperatuur_en_vochtigheid_weer_op_het_OLED-display
******************************************************************************/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define I2C_ADDRESS 0x3C

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define DHTPIN 7     // Digital pin connected to the DHT sensor

// Uncomment the type of sensor in use:
//#define DHTTYPE    DHT11     // DHT 11
#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);

  dht.begin();

  if(!display.begin(SSD1306_SWITCHCAPVCC, I2C_ADDRESS )) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  delay(5000);

  //read temperature and humidity
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
  }

  //clear display
  display.clearDisplay();

  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(t);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true); enable IBM PC character set
  display.write(167); to print the degrees sign
  display.setTextSize(2);
  display.print("C");
  
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h);
  display.print(" %"); 
  
  display.display(); 
}