Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Measure temperature & humidity and display on OLED screen
- * Copyright 2017 - Nathan Osman
- */
- #include <dht.h>
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <Fonts/FreeSans12pt7b.h>
- dht DHT;
- #define DHT11_PIN 3
- #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);
- }
- void loop()
- {
- // Read the data from the sensor
- int chk = DHT.read11(DHT11_PIN);
- char disp[128];
- char fTemp[8];
- char fHum[8];
- // Determine what to display on the screen
- switch (chk)
- {
- case DHTLIB_OK:
- dtostrf(DHT.temperature, 1, 1, fTemp);
- dtostrf(DHT.humidity, 1, 1, fHum);
- sprintf(disp, "T: %s C\nH: %s%%", fTemp, fHum);
- break;
- case DHTLIB_ERROR_CHECKSUM:
- sprintf(disp, "E: checksum");
- break;
- case DHTLIB_ERROR_TIMEOUT:
- sprintf(disp, "E: timeout");
- break;
- case DHTLIB_ERROR_CONNECT:
- sprintf(disp, "E: connect");
- break;
- case DHTLIB_ERROR_ACK_L:
- sprintf(disp, "E: ack low");
- break;
- case DHTLIB_ERROR_ACK_H:
- sprintf(disp, "E: ack high");
- break;
- default:
- sprintf(disp, "E: unknown");
- break;
- }
- // Show the computed value
- display.clearDisplay();
- display.setTextColor(WHITE);
- display.setFont(&FreeSans12pt7b);
- display.setCursor(0, 20);
- display.println(disp);
- display.display();
- // Values can only be read from the sensor every two seconds
- delay(2000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement