Instantly share code, notes, and snippets.

Embed
What would you like to do?
Measure temperature and humidity and display the values on an OLED screen.
/**
* Measure temperature & humidity and display on OLED screen
* Copyright 2017 - Nathan Osman
*/
#include <DHT.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans12pt7b.h>
#define DHTPIN 3
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);
display.setFont(&FreeSans12pt7b);
}
void loop()
{
// Storage for the message to be shown on the display
char szDisp[128];
// Read the data from the sensor
float fTemp = dht.readTemperature();
float fHum = dht.readHumidity();
if (isnan(fTemp) || isnan(fHum)) {
sprintf(szDisp, "err: sensor");
} else {
// Convert the floats into strings
char szTemp[8];
char szHum[8];
dtostrf(fTemp, 1, 1, szTemp);
dtostrf(fHum, 1, 1, szHum);
sprintf(szDisp, "T: %s C\nH: %s%%", szTemp, szHum);
}
// Show the computed value
display.clearDisplay();
display.setCursor(0, 20);
display.println(szDisp);
display.display();
// Values can only be read from the sensor every two seconds
delay(2000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment