답변 : 아두이노 소스코드합치기 질문
페이지 정보
작성자 master 작성일19-11-30 05:56 조회11,072회 댓글1건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2019-11-30 오전 5:55:31
// by Ok-Hyun Park
//----------------------------------------------
#include "MQ131.h"
MQ131 sensor(12,A13,LOW_CONCENTRATION,10000);
//
#include "MQ7.h"
MQ7 mq7(A8,5.0);
//
#include <U8glib.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Wire.h>
#include "RTClib.h"
// 0.96인치 128x64 OLED
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // I2C/TWI
// Setup RTC
RTC_DS3231 RTC;
int monthIndex[122]={0,3,6,9,12,15,18,21,24,27,30,33};
String thisMonth="";
String thisTime="";
String thisDay="";
// DHT22 온도/습도 센서
#define DHTPIN 22 // Pin which is connected to the DHT sensor.
#define DHTTYPE DHT11 // DHT 22(AM2302)
DHT_Unified dht(DHTPIN,DHTTYPE);
uint32_t dht22DelayMS=0;
//온도 이미지삽입
const uint8_t temp[]PROGMEM={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,
0x07,0xFF,0xC0,0x07,0xFF,0x87,0xFF,0xC0,0x07,0x01,0xC7,0x00,0x00,0x07,0x01,0xC7,
0x00,0x00,0x07,0xFF,0xC7,0x00,0x00,0x07,0xFF,0x87,0x00,0x00,0x01,0xFF,0x07,0xFF,
0xC0,0x00,0x38,0x07,0xFF,0xC0,0x0F,0xFF,0xC0,0x38,0x00,0x0F,0xFF,0xC0,0x38,0x00,
0x07,0x00,0x00,0x38,0x00,0x07,0x00,0x00,0x38,0x00,0x07,0x00,0x00,0x38,0x00,0x07,
0xFF,0xCF,0xFF,0xC0,0x07,0xFF,0xCF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//습도 이미지삽입
const uint8_t hum[]PROGMEM={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0xFF,0xC0,0x01,0xFE,
0x07,0xFF,0xC0,0x01,0xCF,0x07,0x00,0x00,0x03,0xC7,0x87,0x00,0x00,0x07,0x83,0xC7,
0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x0F,0xFF,0xC7,0xFF,0xC0,0x0F,0xFF,0xC7,0xFF,
0xC0,0x00,0x00,0x00,0x38,0x00,0x07,0x03,0xC0,0x38,0x00,0x07,0xFF,0xC0,0x38,0x00,
0x07,0xFF,0xC0,0x38,0x00,0x07,0x03,0xC0,0x38,0x00,0x07,0xFF,0xCF,0xFF,0xC0,0x07,
0xFF,0xCF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//
void setup(){
Wire.begin();
RTC.begin();
dht.begin();
sensor_t sensor;
dht.temperature().getSensor(&sensor);
dht22DelayMS=sensor.min_delay/1000;
//
Serial.begin(115200);
//
sensor.calibrate();
Serial.print("R0="); Serial.print(sensor.getR0()); Serial.println(" Ohms");
Serial.print("Time to heat="); Serial.print(sensor.getTimeToRead()); Serial.println(" s");
}
//
void loop(){
float temperature,humidity;
getDHT11Data(&temperature,&humidity);
u8g.firstPage();
do{
draw();
u8g.setFont(u8g_font_fub14); u8g.setPrintPos(35,35); u8g.print(": "); u8g.print(temperature); u8g.print("\xb0""C"); //온도기호삽입
u8g.setFont(u8g_font_fub14); u8g.setPrintPos(35,58); u8g.print(": "); u8g.print(humidity); u8g.print("%");
delay(dht22DelayMS);
}while(u8g.nextPage());
//----------------------------------
Serial.print(mq7.getPPM()); Serial.println("ppm");
//----------------------------------
sensor.begin();
Serial.print("Sampling...");
Serial.print("Concentration O3: "); Serial.print(sensor.getO3(PPM)); Serial.println(" ppm");
Serial.print("Concentration O3: "); Serial.print(sensor.getO3(PPB)); Serial.println(" ppb");
Serial.print("Concentration O3: "); Serial.print(sensor.getO3(MG_M3)); Serial.println(" mg/m3");
Serial.print("Concentration O3: "); Serial.print(sensor.getO3(UG_M3)); Serial.println(" ug/m3");
delay(60000);
}
//
void draw(void){
u8g.setFont(u8g_font_7x13r);
DateTime now=RTC.now();
//
thisDay=String(now.day(),DEC)+"/";
thisMonth=String(now.month(),DEC)+"/";
thisDay=thisDay+thisMonth+String(now.year(),DEC);
const char *newDay=(const char*)thisDay.c_str();
u8g.drawStr(50,10,newDay);
//
thisTime="";
if(now.hour() <10){ thisTime="0"+thisTime; } thisTime=thisTime+String(now.hour())+": ";
if(now.minute()<10){ thisTime=thisTime+"0"; } thisTime=thisTime+String(now.minute()); //+": ";
//
const char *newTime=(const char*)thisTime.c_str();
u8g.drawStr(5,10,newTime);
u8g.drawBitmapP(0,14,5,24,temp);
u8g.drawBitmapP(0,38,5,24,hum);
}
//
void getDHT11Data(float *temperature,float *humidity){
sensors_event_t event;
dht.temperature().getEvent(&event);
if(!isnan(event.temperature)){ *temperature=event.temperature; }
else { *temperature=-1; }
//
dht.humidity().getEvent(&event);
if(!isnan(event.relative_humidity)){ *humidity=event.relative_humidity; }
else { *humidity=-1; }
}
댓글 : 1
조회수 : 11,072
구슬박은놈님의 댓글
구슬박은놈 작성일감사합니다 !