Home » Arduino Uno / Nano » Oled en DHT sensor en Clock DS1307

Oled en DHT sensor en Clock DS1307

oled       nano

Resultaat programma                                          Display gemakkelijk te monteren

 

Code voor de Aduino Nano V3

 

// Getest 06-11-2016

// clock op OLED display
// Display 0,96 OLED 128 x 64 SPI

// DHT22 op pin
//DHT 22 <—-> Arduino
//Sense D12

// Arduino Nan0 V3
// Arduino <—> Display
// GND GND
// 2 vcc
// 3 D0
// 4 D1
// 5 res
// 6 DC
// 7 CS
#include “U8glib.h”
#include “DHT22.h”
#include “RTClib.h”
#include <Time.h> //http://www.arduino.cc/playground/Code/Time
#include <Wire.h> //http://arduino.cc/en/Reference/Wire (included with Arduino IDE)
/*—–( Declare Constants, Pin Numbers )—–*/
//Constants
#define DHT22_PIN 12
DHT22 myDHT22(DHT22_PIN);

RTC_DS1307 RTC;
// Oled Diplay
U8GLIB_SH1106_128X64 u8g(3, 4, 7, 6, 5); // D0=3, D1=4, CS=7, DC=6, Reset=5

int sensorValue = 0; // variable to store the value coming from the sensor
char str[10];

void draw(void) {
DateTime now = RTC.now();
u8g.setFont(u8g_font_unifont);
float t = myDHT22.getTemperatureC();
u8g.drawStr( 0, 10, “Temp. :”);
u8g.drawStr( 60, 10, dtostrf(t, 5, 1, str));
u8g.drawStr( 100, 10, “\260C”);
float h = myDHT22.getHumidity();
u8g.drawStr( 0, 25, “Hum. :”);
u8g.drawStr( 60, 25, dtostrf(h, 5, 1, str));
u8g.drawStr( 100, 25, ” %”);
u8g.setPrintPos(0, 45); // set position
u8g.print(now.year(), DEC);
u8g.print(‘/’);
u8g.print(now.month(), DEC);
u8g.print(‘/’);
u8g.print(now.day(), DEC);
u8g.print(‘ ‘);
u8g.setPrintPos(0, 60); // set position
u8g.print(now.hour(), DEC);
u8g.print(‘:’);
if (now.minute() < 10){ u8g.print(‘0’);}
u8g.print(now.minute(), DEC);
u8g.print(‘:’);
if (now.second() < 10){ u8g.print(‘0’);}
u8g.print(now.second(), DEC);

}

void setup(void) {

Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
u8g.print(‘RTC is NOT running!’);
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
int plus = 2; // Voeding voor display
pinMode(plus, OUTPUT);
digitalWrite(plus, HIGH); // turn the power on

}

void loop(void) {
DateTime now = RTC.now();
// error afhandeling
DHT22_ERROR_t errorCode;
errorCode = myDHT22.readData();
u8g.setPrintPos(0, 45); // set position
switch(errorCode)
{
case DHT_ERROR_NONE:
char buf[128];
sprintf(buf, “Integer-only reading: Temperature %hi.%01hi C, Humidity %i.%01i %% RH”,
myDHT22.getTemperatureCInt()/10, abs(myDHT22.getTemperatureCInt()%10),
myDHT22.getHumidityInt()/10, myDHT22.getHumidityInt()%10);
break;
case DHT_ERROR_CHECKSUM:
u8g.print(‘check sum error ‘);
break;
case DHT_BUS_HUNG:
u8g.print(‘BUS Hung ‘);
break;
case DHT_ERROR_NOT_PRESENT:
u8g.print(‘Not Present ‘);
break;
case DHT_ERROR_ACK_TOO_LONG:
u8g.print(‘ACK time out ‘);
break;
case DHT_ERROR_SYNC_TIMEOUT:
u8g.print(‘Sync Timeout ‘);
break;
case DHT_ERROR_DATA_TIMEOUT:
u8g.print(‘Data Timeout ‘);
break;
case DHT_ERROR_TOOQUICK:
u8g.print(‘Polled to quick ‘);
break;

}
delay(900);

// Display update
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
}

/* ( THE END ) */