|
|
发表于 2017-4-10 14:07:10
|
显示全部楼层
我的代碼很亂沒整理.
-
- ******************************************************************************/
- #include <SD.h>
- const int chipSelect = 4;
- int w=0;
- #include <Wire.h>
- #include "RTClib.h"
- RTC_DS1307 RTC;
- String thisMonth = "";
- String thisTime = "";
- String thisDay="";
- #include <dht.h>
- #define dht_dpin 3
- dht DHT;
- #include "U8glib.h"
- #include <SPI.h>
- U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
- #define DUSTpin A0
- #define DUSTLEDpin 2
- const int delayTime=280;
- const int delayTime2=40;
- const float offTime=9680;
- double dustVal=0;
- int count = 0;
- int led = 5;
- void setup(void) {
- pinMode(led, OUTPUT);
- Wire.begin();
- RTC.begin();
- if (! RTC.isrunning()) {
- Serial.println("RTC is NOT running!");
- RTC.adjust(DateTime(__DATE__, __TIME__));
- }
- Serial.begin(9600);
- Serial.print("Initializing SD card...");
- pinMode(10, OUTPUT);
- if (!SD.begin(chipSelect)) {
- Serial.println("Card failed, or not present");
- return;
- }
- }
- void loop(void) {
-
- u8g.firstPage();
- do {
- draw();
- delay(500);
- }
- while( u8g.nextPage() );
-
- int dustLevel = readPM();
- double dustVolt = dustLevel*(5.0 / 1024.0);
- dustVal = 0.172 * dustVolt - 0.00;
- dustVal =dustVal*1000.0 ; //mg to ug
- u8g.drawStr(100,47,"0");
- }
- int readPM(void){
- digitalWrite(DUSTLEDpin,LOW);
- delayMicroseconds(delayTime);
- int Val = analogRead(DUSTpin);
- delayMicroseconds(delayTime2);
- digitalWrite(DUSTLEDpin,HIGH);
- delayMicroseconds(offTime);
- return Val;
- }
- void draw(void) {
- digitalWrite(led, LOW);
- File dataFile = SD.open("datalog.txt", FILE_WRITE);
- if (SD.exists("datalog.txt")){
- Serial.println("datalog.txt exists.");
- if (dataFile) {
- u8g.setFontPosTop();
- u8g.setFont(u8g_font_profont15);
- DateTime now = RTC.now();
- thisMonth="";
- thisDay= String(now.month(), DEC) + "/";
- thisDay=thisDay + String(now.day(), DEC) + "/";
- thisDay=thisDay + String(now.year() , DEC);
- const char* newDay = (const char*) thisDay.c_str();
- u8g.setPrintPos(1,14);
- u8g.print(newDay);
- thisTime="";
- thisTime=String(now.hour()) + ":";
- if (now.minute() < 10){ thisTime=thisTime + "0";}
- thisTime=thisTime + String(now.minute()) + ":";
- thisTime=thisTime + String(now.second());
- const char* newTime = (const char*) thisTime.c_str();
- u8g.setPrintPos(1,25);
- u8g.print(newTime);
- int chk = DHT.read11(dht_dpin);
- int humi = DHT.humidity+35;
- String thishumi1 = String(humi);
- const char* thishumi = (const char*) thishumi1.c_str();
- u8g.setPrintPos(1,36);
- u8g.print(thishumi);
- u8g.setPrintPos(15,36);
- u8g.print("%/");
- int temp = DHT.temperature-2;
- String thisTemp1 = String(temp) ;
- const char* thisTemp = (const char*) thisTemp1.c_str();
- u8g.setPrintPos(30,36);
- u8g.print(thisTemp);
- u8g.setPrintPos(45,36);
- u8g.print("\260C");
- u8g.setPrintPos(0,47);
- u8g.print(dustVal);
- u8g.setPrintPos(50,47);
- u8g.print("ug/m3");
- if (now.second()==59){
- digitalWrite(led, HIGH);
- dataFile.print(newDay);
- dataFile.print(",");
- dataFile.print(newTime);
- dataFile.print(",");
- dataFile.print(thishumi);
- dataFile.print(",");
- dataFile.print(thisTemp);
- dataFile.print(",");
- dataFile.print(dustVal);
- dataFile.println(",");
- delay(500);
- digitalWrite(led, LOW);
- }
-
- dataFile.close();
-
- } else {
- digitalWrite(led, HIGH);
- Serial.println("error opening datalog.txt");
- }
-
- }else {
- Serial.println("datalog.txt doesn't exist.");
- digitalWrite(led, HIGH);
- }
-
- }
复制代码 |
|