SHARE
TWEET

Untitled

a guest Nov 19th, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Adafruit_GFX.h>                                       //graphix library for drawing
  2. #include <Adafruit_ILI9341.h>                                   //LCD library to drive screen
  3. //#include <DS1307.h>
  4. //#include <RTClib.h>
  5. #include "RTClib.h"
  6. //#include <SD.h>
  7. #include "SPI.h"
  8. #include <Adafruit_BMP280.h>
  9. #include <TouchScreen.h>
  10. #include <Wire.h>
  11. #include <SdFat.h>                
  12. #include <Adafruit_SPIFlash.h>    // SPI / QSPI flash library
  13. #include <Adafruit_ImageReader.h> // Image-reading functions
  14. #include <avr/sleep.h>
  15.  
  16. // Comment out the next line to load from SPI/QSPI flash instead of SD card:
  17. #define USE_SD_CARD
  18.  
  19. #if defined(USE_SD_CARD)
  20.   SdFat                SD;         // SD card filesystem
  21.   Adafruit_ImageReader reader(SD); // Image-reader object, pass in SD filesys
  22.  
  23. #endif
  24.  
  25.  
  26. RTC_DS1307 rtc;
  27.  
  28. File czujnik;
  29.  
  30. int lastMinute=0;
  31.  
  32. #define Addr 0x44 //sht
  33.  
  34. #define Addr2 0x68 //ds1307
  35.  
  36. //#define Addr3 0x77 //bmp280
  37.  
  38. #define Addr4 0x45
  39.  
  40. #define Addr5 0x50
  41.  
  42. #define ILI9341_GRAY 0x7BEF
  43.  
  44. //kalibracja lewy górny, prawy dolny
  45. //#define XMIN 221
  46. //#define YMIN 147
  47. //#define XMAX 835
  48. //#define YMAX 895
  49.  
  50.  
  51.  
  52. #define TFT_DC 9
  53. #define TFT_RST -1   // You can also connect this to the Arduino reset in which case, set this #define pin to -1!
  54. #define TFT_CS 10
  55. #define SD_CS  4
  56.  
  57. #define XMIN 154
  58. #define YMIN 123
  59. #define XMAX 918
  60. #define YMAX 945
  61.  
  62.  
  63. #define MINPRESSURE 10
  64. #define MAXPRESSURE 1000
  65.  
  66. char strona;
  67. float TEMP, TEMP2, f, h ,f2, h2;
  68.  
  69.  
  70. Adafruit_BMP280 bmp;
  71.  
  72. #define YP A3  // must be an analog pin, use "An" notation!
  73. #define XM A2  // must be an analog pin, use "An" notation!
  74. #define YM 6
  75. // can be a digital pin
  76. #define XP 5   // can be a digital pin
  77.  
  78. //unsigned long lastDay = 0;
  79.  
  80.  
  81. Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
  82.  
  83. TouchScreen ts = TouchScreen(XP, YP, XM, YM, 298);
  84.  
  85.  
  86.  int linie[] = {50, 70, 90, 110, 130, 150, 170, 190, 210, 230};
  87.  
  88. int wartosc[] = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10};
  89.                                                                                                                                                                                                                                                                                                                                                  
  90.  float tempMax = 0;
  91.  float tempMin = 999;
  92.  float tempMax2 = 0;
  93.  float tempMin2 = 999;
  94.  
  95.  
  96. void setup() {
  97.  
  98.  
  99.  
  100.  
  101.  
  102.   tft.begin();
  103.   tft.setRotation(1);
  104.   Wire.begin();
  105.   Serial.begin(9600);
  106.    drawHome();
  107.    
  108.    strona = '0';
  109.  
  110.  
  111.    bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
  112.                   Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
  113.                   Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
  114.                   Adafruit_BMP280::FILTER_X16,      /* Filtering. */
  115.                   Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
  116.   //  rtc.begin();
  117.  
  118.  
  119.   bmp.begin();
  120.  
  121.  
  122.     // Data i czas z momentu kompilacji
  123.   rtc.adjust(DateTime(__DATE__, __TIME__));
  124.  
  125. rtc.begin();
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135. }
  136.  
  137.  
  138. void loop()
  139.  
  140. {
  141.  
  142.  
  143.  
  144. //delay(5000);//wait 5 seconds before going to sleep. In real senairio keep this as small as posible
  145. // Going_To_Sleep();
  146.  
  147. //dt = clock.getDateTime();
  148.  
  149.  
  150.   DateTime now = rtc.now();
  151.   labview();
  152.  
  153.  
  154.     TSPoint p = ts.getPoint();
  155.     pinMode(XM, OUTPUT);
  156.     pinMode(YP, OUTPUT);
  157.  
  158.  
  159.  
  160.  
  161.         if(strona == '0')
  162.        
  163.   {
  164.     if (p.z > MINPRESSURE && p.z < MAXPRESSURE)
  165.     {
  166.     p.x = map(p.x, YMIN, YMAX, 0, tft.height());
  167.     p.y = map(p.y, XMIN, XMAX, 0, tft.width());
  168.     int y = tft.height() - p.x;
  169.     int x = p.y;
  170.  
  171.     if(x>=45 && x<=230 && y>=80 && y<=130)  
  172.     {
  173.           strona = '2';  
  174.           tft.fillScreen(ILI9341_WHITE);
  175.           datetime();
  176.           BMP();
  177.           SHTindoor();
  178.           SHToutdoor();
  179.           Anemometer();      
  180.        delay(3000);
  181.     }
  182.  
  183.    
  184.       if(x>=45 && x<=230 && y>=130 && y<=180)
  185.    {
  186.  
  187.  
  188.         strona= '1';
  189.        
  190.   for(int j=50;j<320;j++)
  191.   {
  192.     tft.fillScreen(ILI9341_WHITE);
  193.         Graph();
  194.        
  195.   }
  196.   }
  197.          
  198.         if(x>=45 && x<=230 && y>=180 && y<=230)      
  199.  
  200. {
  201.  
  202.   strona = '3';
  203.   tft.fillScreen(ILI9341_WHITE);
  204.  
  205.    logger();
  206.          }
  207.  
  208.              
  209.          
  210.          }
  211.   }
  212.  
  213.   if(strona == '1')
  214.   {
  215.     Graph();
  216.    
  217.  
  218.   if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
  219.  
  220.  p.x = map(p.x, YMIN, YMAX, 0, tft.height());
  221.     p.y = map(p.y, XMIN, XMAX, 0, tft.width());
  222.     int y = tft.height() - p.x;
  223.     int x = p.y;
  224.    
  225.     //back
  226.   if((x>=20 && x<=70 && y>=15 && y<=40))
  227.   {  
  228.  
  229.  tft.fillScreen(ILI9341_WHITE);
  230.    
  231.   strona = '0';
  232.  
  233.   drawHome();
  234.    
  235.       }
  236.   }
  237.   }
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245. if(strona == '2')
  246. {
  247.    
  248.          datetime();
  249.           BMP();
  250.           SHTindoor();
  251.           SHToutdoor();
  252.           Anemometer();
  253.      
  254.          
  255.   if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
  256.  
  257.  p.x = map(p.x, YMIN, YMAX, 0, tft.height());
  258.     p.y = map(p.y, XMIN, XMAX, 0, tft.width());
  259.     int y = tft.height() - p.x;
  260.     int x = p.y;
  261.    
  262.     //back
  263.   if((x>=20 && x<=70 && y>=20 && y<=40))
  264.   {  
  265.  
  266.     tft.fillScreen(ILI9341_WHITE);
  267.   strona = '0';
  268.  
  269.   drawHome();
  270.  
  271.  
  272.       }
  273.     }
  274.  
  275.   }
  276. if(strona == '3')
  277. {
  278.    
  279.          logger();
  280.          
  281.        zapis1();
  282.   if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
  283.  
  284.  p.x = map(p.x, YMIN, YMAX, 0, tft.height());
  285.     p.y = map(p.y, XMIN, XMAX, 0, tft.width());
  286.     int y = tft.height() - p.x;
  287.     int x = p.y;
  288.    
  289.     //back
  290.   if((x>=20 && x<=70 && y>=20 && y<=40))
  291.   {  
  292.  
  293.  tft.fillScreen(ILI9341_WHITE);
  294.    
  295.   strona = '0';
  296.  
  297.   drawHome();
  298.    
  299.       }
  300.  
  301.     if(x>=130 && x<=100 && y>=45 && y<=40)
  302.  
  303.       {
  304.          
  305.     zapis1();
  306.      
  307.     tft.fillScreen(ILI9341_WHITE);
  308.    
  309.     strona = '0';
  310.  
  311.     drawHome();
  312.       }
  313.      }
  314.     }
  315.    }
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323. /*
  324. void zapis2()
  325. {
  326.        DateTime now = rtc.now();
  327.      
  328.    czujnik= SD.open("Dane", FILE_WRITE);
  329.  
  330.    
  331.   if(now.minute() % 5 == 0 && now.second() == 0)
  332.   {
  333.    czujnik.print(now.hour(), DEC);   czujnik.print(":");
  334.    czujnik.print(now.minute(), DEC); czujnik.print(":");
  335.    czujnik.print(now.second(), DEC); czujnik.print("");
  336.    czujnik.print('\t');
  337.    
  338.     czujnik.print(F("Temperature "));
  339.     czujnik.print(f);
  340.  
  341.     czujnik.print('\t');
  342.  
  343.    czujnik.print(F("Humidity "));
  344.     czujnik.print(h);
  345.  
  346.    czujnik.print('\t');
  347.  
  348.    czujnik.print(F("Pressure "));
  349.    
  350.  
  351. // czujnik.print(pressure);
  352.  
  353.  czujnik.print('\t');
  354.         czujnik.print(F("Temperature 2 " ));
  355.     czujnik.print(f2);
  356.  
  357.     czujnik.print('\t');
  358.  
  359.    czujnik.print(F("Humidity 2 "));
  360.     czujnik.print(h2);
  361.    czujnik.print('\t');
  362.     czujnik.close();
  363.   }
  364.  
  365. }*/
  366. void zapis1()
  367. {
  368.    DateTime now = rtc.now();
  369.    czujnik= SD.open("Dane", FILE_WRITE);
  370.    
  371.  
  372.  
  373. if (now.minute() != lastMinute)
  374. {
  375.     if (now.minute() % 15 == 0)  // if divisible by 15
  376.           {
  377.    czujnik.print(now.hour(), DEC);   czujnik.print(":");
  378.    czujnik.print(now.minute(), DEC); czujnik.print(":");
  379.    czujnik.print(now.second(), DEC); czujnik.print("");
  380.    czujnik.print('\t');
  381.  
  382.    SHTindoor();
  383.     czujnik.print(F("Temperature "));
  384.     czujnik.print(f);
  385.  
  386.     czujnik.print('\t');
  387.  
  388.    czujnik.print(F("Humidity "));
  389.     czujnik.print(h);
  390.  
  391.    czujnik.print('\t');
  392.  
  393.    czujnik.print(F("Pressure "));
  394.    
  395.   int pressure = ((bmp.readPressure()/100)+14);
  396.   czujnik.print(pressure);
  397.  
  398.   czujnik.print('\t');
  399.         czujnik.print(F("Temperature2 " ));
  400.     czujnik.print(f2);
  401.  
  402.     czujnik.print('\t');
  403.  
  404.    czujnik.print(F("Humidity 2 "));
  405.     czujnik.print(h2);
  406.    czujnik.print('\t');
  407.     czujnik.close();
  408.     lastMinute = now.minute();
  409. }
  410.  // if(now.minute() % 10  == 0 && now.second() == 0)
  411.  // {
  412. }
  413.  
  414.   }
  415.  
  416. void logger()
  417.  
  418. {
  419. zapis1();
  420.    TSPoint p = ts.getPoint();  //Get touch point
  421.  
  422.      pinMode(XM, OUTPUT);
  423.      pinMode(YP, OUTPUT);
  424.  
  425. //tft.fillRoundRect(10,10, 70, 36, 5,ILI9341_RED);
  426.   //tft.drawRoundRect(10,10,70,36,5,ILI9341_WHITE);
  427.   tft.setCursor(20,20);
  428.   tft.setTextColor(ILI9341_BLACK);
  429.   tft.setTextSize(3);
  430.   tft.print(F("<-"));
  431.  
  432.  
  433.     if(SD.begin(SD_CS))
  434.    {
  435.  
  436.    czujnik= SD.open("Dane", FILE_WRITE);
  437.    tft.setTextSize(2);
  438.    tft.setCursor(10,210);
  439.     tft.fillRect(10,210, 120, 30, ILI9341_WHITE);
  440.    tft.print(F("SD..."));
  441.  
  442. //    SHT();
  443.   //    czujnik.close();
  444.    
  445.    }
  446.  
  447.       else{
  448.   // czujnik= SD.open("Dane", FILE_WRITE);
  449.    
  450.    tft.setTextSize(2);
  451.     tft.setCursor(10,210);
  452.      tft.fillRect(10,210, 120, 30, ILI9341_WHITE);
  453.       tft.print(F("No SD Card"));
  454.  
  455.       }
  456.  
  457. //tft.drawRoundRect(100,40,140,50,5,ILI9341_BLACK);
  458. //tft.setCursor(110,50);
  459.  tft.fillRoundRect(130,45, 100, 40,5, ILI9341_WHITE);
  460.   tft.drawRoundRect(130,45,100,40,5,ILI9341_BLACK);
  461.   tft.setCursor(140,55);
  462. tft.setTextColor(ILI9341_BLACK);
  463. tft.setTextSize(2);
  464. tft.print("15min");
  465.  
  466.   tft.fillRoundRect(130,95, 100, 40,5, ILI9341_WHITE);
  467.   tft.drawRoundRect(130,95,100,40,5,ILI9341_BLACK);
  468.   tft.setCursor(140 ,105);
  469.   tft.setTextColor(ILI9341_BLACK);
  470.   tft.setTextSize(2);
  471.   tft.print(F("30min"));
  472.  
  473.     tft.fillRoundRect(130,145, 100, 40,5, ILI9341_WHITE);
  474.   tft.drawRoundRect(130,145,100,40,5,ILI9341_BLACK);
  475.   tft.setCursor(140 ,155);
  476.   tft.setTextColor(ILI9341_BLACK);
  477.   tft.setTextSize(2);
  478.   tft.print(F("1h"));
  479.  
  480.      tft.fillRoundRect(130,195, 100, 40,5, ILI9341_WHITE);
  481.   tft.drawRoundRect(130,195,100,40,5,ILI9341_BLACK);
  482.   tft.setCursor(140 ,205);
  483.   tft.setTextColor(ILI9341_BLACK);
  484.   tft.setTextSize(2);
  485.   tft.print(F("5h"));
  486.  
  487.  
  488.  
  489.   }
  490. /*
  491. tft.drawRoundRect(100,90,70,36,5,ILI9341_BLACK);
  492. tft.setCursor(110,100);
  493. tft.setTextColor(ILI9341_BLACK);
  494. tft.setTextSize(2);
  495. tft.print("30min");
  496.  
  497. tft.drawRoundRect(100,140,70,36,5,ILI9341_BLACK);
  498. tft.setCursor(110,150);
  499. tft.setTextColor(ILI9341_BLACK);
  500. tft.setTextSize(2);
  501. tft.print("1h");
  502.  
  503. tft.drawRoundRect(100,190,70,36,5,ILI9341_BLACK);
  504. tft.setCursor(110,200);
  505. tft.setTextColor(ILI9341_BLACK);
  506. tft.setTextSize(2);
  507. tft.print("5h");
  508. */
  509.    
  510.    
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.    
  519.  
  520.    
  521.  void BMP()
  522. {
  523.  
  524. ImageReturnCode stat; // Status from image-reading functions
  525.   // Load full-screen BMP file 'purple.bmp' at position (0,0) (top left).
  526.   // Notice the 'reader' object performs this, with 'tft' as an argument.
  527.  // Serial.print(F("Loading purple.bmp to screen..."));
  528. stat = reader.drawBMP("/wi-barometer.bmp", tft, 165, 150);
  529. reader.printStatus(stat);   // How'd we do?
  530.  
  531. int pressure = ((bmp.readPressure()/100)+14);
  532. tft.setTextSize(2);
  533. tft.setCursor(205,160);
  534. tft.print("Pressure");
  535. tft.fillRect(205, 190, 110, 40, ILI9341_WHITE);
  536. tft.setCursor(205, 190);
  537. tft.setTextColor(ILI9341_BLACK);
  538. tft.print(pressure);
  539. tft.setCursor(240,190);  
  540. tft.println(F(" hPa"));
  541.  
  542. //Serial.print(pressure);
  543.  
  544.  
  545. /*
  546.    czujnik= SD.open("Dane", FILE_WRITE);
  547.    czujnik.print(F(" Pressure"));
  548.    czujnik.println(p);
  549.    czujnik.close();
  550.   */
  551. }
  552.  
  553. void Anemometer()
  554. {
  555.  
  556.   ImageReturnCode stat; // Status from image-reading functions
  557.   // Load full-screen BMP file 'purple.bmp' at position (0,0) (top left).
  558.   // Notice the 'reader' object performs this, with 'tft' as an argument.
  559.   //Serial.print(F("Loading purple.bmp to screen..."));
  560.   tft.setTextSize(2);
  561. stat = reader.drawBMP("/wi-strong-wind.bmp", tft,30, 145);
  562. tft.setCursor(50, 160);
  563. tft.print("Wind Speed");
  564.  reader.printStatus(stat);   // How'd we do?
  565.  tft.fillRect(50, 190, 110, 40, ILI9341_WHITE);
  566. tft.setCursor(50, 190);
  567. tft.println(F(" 0 m/s"));
  568.  
  569. }
  570.  
  571.  
  572.  
  573.  
  574. void datetime()
  575. {
  576.  
  577.   DateTime now = rtc.now();
  578.  
  579.  Wire.beginTransmission(Addr2);
  580.  Wire.endTransmission();
  581. tft.setTextSize(2);
  582. tft.setTextColor(ILI9341_BLACK);
  583. tft.fillRect(180,15,95,30,ILI9341_WHITE);
  584. tft.setCursor(180,15);
  585.  
  586.  
  587. tft.drawLine(180,35,290,35, ILI9341_BLACK);
  588.  
  589.  
  590.   tft.print(now.hour(), DEC);   tft.print(":");
  591.   tft.print(now.minute(), DEC); tft.print(":");
  592.   tft.print(now.second(), DEC); tft.println("");
  593. //delay(10);
  594.  
  595.     /* czujnik= SD.open("Dane", FILE_WRITE);
  596.  
  597.    czujnik.print(now.hour(), DEC);   czujnik.print(":");
  598.    czujnik.print(now.minute(), DEC); czujnik.print(":");
  599.    czujnik.print(now.second(), DEC); czujnik.print("");
  600.    czujnik.print('\t');
  601.    czujnik.close();*/
  602.  
  603.  
  604.  
  605.  
  606.  
  607. }
  608.  
  609. void labview()
  610. {
  611.  
  612.      
  613.  
  614.     DateTime now = rtc.now();
  615. unsigned int data[6];
  616.      // Start I2C Transmission
  617.   Wire.beginTransmission(Addr);
  618.  
  619.   // Send 16-bit command byte
  620.   Wire.write(0x2C);
  621.   Wire.write(0x06);
  622.   // Stop I2C transmission
  623.   Wire.endTransmission();
  624.  
  625.    delay (300);
  626.  
  627.     // Start I2C Transmission
  628.   Wire.beginTransmission(Addr);
  629.   // Stop I2C Transmission
  630.   Wire.endTransmission();
  631.  
  632.   // Request 6 bytes of data
  633.   Wire.requestFrom(Addr, 6);
  634.  
  635.   // Read 6 bytes of data
  636.   // temp msb, temp lsb, temp crc, hum msb, hum lsb, hum crc
  637.   if (Wire.available() == 6)
  638.   {
  639.     data[0] = Wire.read();//MSB
  640.     data[1] = Wire.read();//LSB
  641.     data[2] = Wire.read();//CHECKSUM
  642.     data[3] = Wire.read();
  643.     data[4] = Wire.read();
  644.     data[5] = Wire.read();
  645.   }
  646.  
  647.  
  648.  
  649.    
  650.  
  651.  
  652. float TEMP = (data[0] * 256.0) + data[1];
  653.  
  654.  
  655. float f= -45.0 + (175.0 * TEMP / 65535.0);
  656.  
  657.  
  658. float h = ((100.0 * ((data[3] * 256.0) + data[4])) / 65535.0);
  659.  
  660.  
  661. unsigned int  data1[6];
  662.  
  663.  
  664.  
  665.  
  666.    Wire.beginTransmission(Addr4);
  667.    Wire.write(0x2C);
  668.    Wire.write(0x06);
  669.    Wire.endTransmission();
  670.  
  671.     delay (300);
  672.  
  673.     // Start I2C Transmission
  674.   Wire.beginTransmission(Addr4);
  675.   // Stop I2C Transmission
  676.   Wire.endTransmission();
  677.  
  678.    Wire.requestFrom(Addr4, 6);
  679.   // Read 6 bytes of data
  680.   // temp msb, temp lsb, temp crc, hum msb, hum lsb, hum crc
  681.   if (Wire.available() == 6)
  682.   {
  683.     data1[0] = Wire.read();
  684.     data1[1] = Wire.read();
  685.     data1[2] = Wire.read();
  686.     data1[3] = Wire.read();
  687.     data1[4] = Wire.read();
  688.     data1[5] = Wire.read();
  689.   }
  690.  
  691. TEMP2 = (data1[0] * 256.0) + data1[1];
  692. f2 = -45.0 + (175.0 * TEMP2 / 65535.0);
  693. h2= ((100.0 * ((data1[3] * 256.0) + data1[4])) / 65535.0);
  694.  //char buffer[50];
  695.  
  696. //sprintf(buffer, "%f,%f,%f,%f\n", f, h, f2, h2);
  697. int pressure = ((bmp.readPressure()/100)+14);
  698. /// Serial.write(buffer);
  699.  
  700. Serial.print(f);
  701. Serial.print('\t');
  702. Serial.print(h);
  703. Serial.print('\t');
  704. Serial.print(f2);
  705. Serial.print('\t');
  706. Serial.print(h2);
  707. Serial.print('\t');
  708. Serial.print(pressure);
  709. Serial.print('\t');
  710.  
  711.  
  712. }
  713.  
  714.  
  715. void SHTindoor()
  716. {
  717.  
  718.  
  719.  /* ImageReturnCode stat; // Status from image-reading functions
  720.   // Load full-screen BMP file 'purple.bmp' at position (0,0) (top left).
  721.   // Notice the 'reader' object performs this, with 'tft' as an argument.
  722.   //Serial.print(F("Loading purple.bmp to screen..."));
  723. stat = reader.drawBMP("/wi-humidity.bmp", tft, 30, 75);
  724. reader.printStatus(stat);   // How'd we do?
  725. */
  726. //ImageReturnCode stat; // Status from image-reading functions
  727.   // Load full-screen BMP file 'purple.bmp' at position (0,0) (top left).
  728.   // Notice the 'reader' object performs this, with 'tft' as an argument.
  729.   //Serial.print(F("Loading purple.bmp to screen..."));
  730. // stat = reader.drawBMP("/wi-cloud.bmp", tft, 0, 230);
  731.  //reader.printStatus(stat);   // How'd we do?
  732.  
  733.  //tft.fillRoundRect(10,10, 70, 36, 5,ILI9341_RED);
  734.   //tft.drawRoundRect(10,10,70,36,5,ILI9341_WHITE);
  735.   tft.setCursor(20,20);
  736.   tft.setTextColor(ILI9341_BLACK);
  737.   tft.setTextSize(3);
  738.   tft.print(F("<-"));
  739.  
  740. unsigned int data[6];
  741.      // Start I2C Transmission
  742.   Wire.beginTransmission(Addr);
  743.  
  744.   // Send 16-bit command byte
  745.   Wire.write(0x2C);
  746.   Wire.write(0x06);
  747.   // Stop I2C transmission
  748.   Wire.endTransmission();
  749.  
  750.    delay (300);
  751.  
  752.     // Start I2C Transmission
  753.   Wire.beginTransmission(Addr);
  754.   // Stop I2C Transmission
  755.   Wire.endTransmission();
  756.  
  757.   // Request 6 bytes of data
  758.   Wire.requestFrom(Addr, 6);
  759.  
  760.   // Read 6 bytes of data
  761.   // temp msb, temp lsb, temp crc, hum msb, hum lsb, hum crc
  762.   if (Wire.available() == 6)
  763.   {
  764.     data[0] = Wire.read();//MSB
  765.     data[1] = Wire.read();//LSB
  766.     data[2] = Wire.read();//CHECKSUM
  767.     data[3] = Wire.read();
  768.     data[4] = Wire.read();
  769.     data[5] = Wire.read();
  770.   }
  771.  
  772.  
  773.  
  774.  
  775.  
  776. TEMP = (data[0] * 256.0) + data[1];
  777.  
  778.  
  779. f= -45.0 + (175.0 * TEMP / 65535.0);
  780.  
  781.  
  782. h = ((100.0 * ((data[3] * 256.0) + data[4])) / 65535.0);
  783.  
  784.  
  785.  
  786.  /*  czujnik= SD.open("Dane", FILE_WRITE);
  787.    
  788.     czujnik.print(F("Temperature "));
  789.     czujnik.print(f);
  790.  
  791.    czujnik.print(F("Humidity "));
  792.     czujnik.print(h);
  793.    
  794.     czujnik.close();*/
  795.    
  796. //nowtime = milis();
  797.  
  798.  
  799. //if (time - lastDay >= day)
  800. //{
  801. //tempMin=0;
  802. //  tempMax=0;
  803. //  lastDay = time;
  804. //}
  805.  
  806.  
  807.  
  808.  
  809.  tft.setTextSize(2);
  810.  tft.setCursor(50,50);
  811.  tft.setTextColor(ILI9341_BLACK);
  812.  tft.print("Outdoor");
  813.  
  814. tft.setTextSize(2);
  815. tft.setCursor(50,75);
  816. tft.fillRect(50,75,110,20,ILI9341_WHITE);
  817. tft.setTextColor(ILI9341_BLACK);
  818.  
  819. tft.print(f, 2);
  820. tft.setCursor(115,70);
  821. tft.println(F("o"));
  822. tft.setCursor(130,75);
  823. tft.println(F("C"));
  824.  
  825. tft.setCursor(50,115);
  826. tft.fillRect(50,115,110,30,ILI9341_WHITE);
  827. tft.setTextColor(ILI9341_BLACK);
  828. tft.print(h, 2);
  829. tft.println(F("%"));
  830. //delay(1000);
  831.  
  832. if (f > tempMax)
  833. {
  834.   tempMax = f;
  835.  
  836.   tft.setCursor(50,98);
  837.   tft.fillRect(50,98, 30, 15, ILI9341_WHITE);
  838.   tft.setTextColor(ILI9341_RED);
  839.   tft.setTextSize(1);
  840.   tft.print(tempMax,2);
  841.   tft.setCursor(79,95);
  842.   tft.println("o");
  843.   tft.setCursor(85,98);
  844.   tft.println("C");
  845. }
  846. else if( f < tempMin)
  847. {
  848.   tempMin = f;
  849.  
  850.   tft.setCursor(100,98);
  851.   tft.fillRect(100,98, 30, 15, ILI9341_WHITE);
  852.   tft.setTextColor(ILI9341_BLACK);
  853.   tft.setTextSize(1);
  854.   tft.print(tempMin,2);
  855.   tft.setCursor(129,95);
  856.   tft.println("o");
  857.   tft.setCursor(135,98);
  858.   tft.println("C");
  859. }
  860.  
  861.  
  862.    
  863.    
  864.    
  865.  
  866.  
  867. }
  868.  
  869. void SHToutdoor()
  870. {
  871.  
  872.  
  873.  
  874. unsigned int  data1[6];
  875.  
  876.  
  877.  
  878.  
  879.    Wire.beginTransmission(Addr4);
  880.    Wire.write(0x2C);
  881.    Wire.write(0x06);
  882.    Wire.endTransmission();
  883.  
  884.     delay (300);
  885.  
  886.     // Start I2C Transmission
  887.   Wire.beginTransmission(Addr4);
  888.   // Stop I2C Transmission
  889.   Wire.endTransmission();
  890.  
  891.    Wire.requestFrom(Addr4, 6);
  892.   // Read 6 bytes of data
  893.   // temp msb, temp lsb, temp crc, hum msb, hum lsb, hum crc
  894.   if (Wire.available() == 6)
  895.   {
  896.     data1[0] = Wire.read();
  897.     data1[1] = Wire.read();
  898.     data1[2] = Wire.read();
  899.     data1[3] = Wire.read();
  900.     data1[4] = Wire.read();
  901.     data1[5] = Wire.read();
  902.   }
  903.  
  904. TEMP2 = (data1[0] * 256.0) + data1[1];
  905. f2 = -45.0 + (175.0 * TEMP2 / 65535.0);
  906. h2= ((100.0 * ((data1[3] * 256.0) + data1[4])) / 65535.0);
  907.  
  908.  
  909.  
  910.  
  911.  
  912. //OUTDOOR
  913.  tft.setTextSize(2);
  914.  tft.setCursor(205,50);
  915.  tft.setTextColor(ILI9341_BLACK);
  916. tft.print("Indoor");
  917.  
  918. tft.setTextSize(2);
  919.  
  920. tft.setCursor(205,75);
  921. tft.fillRect(205,75,110,20,ILI9341_WHITE);
  922. tft.setTextColor(ILI9341_BLACK);
  923. tft.print(f2, 2);
  924. tft.setCursor(270,70);
  925. tft.println(F("o"));
  926. tft.setCursor(285,75);
  927. tft.println(F("C"));
  928.  
  929. tft.setCursor(205,115);
  930. tft.fillRect(205 ,115,110,30,ILI9341_WHITE);
  931. tft.setTextColor(ILI9341_BLACK);
  932. tft.print(h2, 2);
  933. tft.println(F("%"));
  934.  
  935. if (f2 > tempMax2)
  936. {
  937.   tempMax2 = f2;
  938.  
  939.   tft.setCursor(205,98);
  940.   tft.fillRect(205,98, 30, 15, ILI9341_WHITE);
  941.   tft.setTextColor(ILI9341_RED);
  942.   tft.setTextSize(1);
  943.   tft.print(tempMax2,2);
  944.   tft.setCursor(234,95);
  945.   tft.println("o");
  946.   tft.setCursor(240,98);
  947.   tft.println("C");
  948. }
  949. if( f2 < tempMin2)
  950. {
  951.   tempMin2 = f2;
  952.  
  953.   tft.setCursor(255,98);
  954.   tft.fillRect(255,98, 30, 15, ILI9341_WHITE);
  955.   tft.setTextColor(ILI9341_BLACK);
  956.   tft.setTextSize(1);
  957.   tft.print(tempMin2,2);
  958.   tft.setCursor(289,95);
  959.   tft.println("o");
  960.   tft.setCursor(294,98);
  961.   tft.println("C");
  962. }
  963. //delay(1000);
  964.  
  965.   /*      czujnik= SD.open("Dane", FILE_WRITE);
  966.    czujnik.print(F("Temperature2 "));
  967.     czujnik.print(f2);
  968.    
  969.    // czujnik.print(F("Humidity2 "));
  970.     czujnik.print(h2);*/
  971.  
  972.    
  973. }
  974.  
  975. void Graph()
  976. {
  977.   tft.setCursor(20,15);
  978.   tft.setTextColor(ILI9341_BLACK);
  979.   tft.setTextSize(3);
  980.   tft.print(F("<-"));
  981.    
  982.    DateTime now = rtc.now();
  983.    
  984.    tft.setCursor(230, 232);
  985.    tft.setTextSize(1);
  986.    tft.print("Time");
  987.    
  988.  //tft.fillRect(270,232,50,20,ILI9341_WHITE);
  989.  tft.setTextSize(1);
  990.  tft.setTextColor(ILI9341_BLACK);
  991.  tft.setCursor(270,232);
  992.  tft.print(now.hour(),DEC);  
  993.  tft.print(":");
  994.  tft.print(now.minute(), DEC);  
  995.    
  996. //tft.fillRoundRect(30,10, 70, 36, 5,ILI9341_BLACK);
  997.  // tft.drawRoundRect(30,10,70,36,5,ILI9341_WHITE);
  998.  
  999.  
  1000.  
  1001.    
  1002.      for(int i = 0; i < 10; i++)
  1003.   {
  1004.     tft.drawLine(40, linie[i], 50, linie[i], ILI9341_WHITE);
  1005.   }
  1006.   //pomocnicze
  1007.      for(int i = 0; i < 9; i++)
  1008.   {
  1009.     tft.drawLine(40, linie[i]+10, 50, linie[i]+10, ILI9341_WHITE);
  1010.   }
  1011.    for(int i = 0; i < 10; i++)
  1012.   {
  1013.     tft.setCursor(25, (linie[i]- 3));
  1014.     tft.setTextColor(ILI9341_BLACK);
  1015.     tft.setTextSize(1);
  1016.     tft.println(wartosc[i]);
  1017.   }
  1018.  
  1019.    
  1020. //tft.setCursor(30, 5);
  1021.  
  1022. // tft.print("Temperature/Humidity");
  1023.  
  1024.   for(int pix=50; pix<320; pix++){
  1025.  
  1026.    unsigned int data[6];
  1027.    
  1028.   // Start I2C Transmission
  1029.   Wire.beginTransmission(Addr4);
  1030.  
  1031.   // Send 16-bit command byte
  1032.   Wire.write(0x2C);
  1033.   Wire.write(0x06);
  1034.   // Stop I2C transmission
  1035.   Wire.endTransmission();
  1036.  
  1037. delay(100);
  1038.   Wire.beginTransmission(Addr4);
  1039.   Wire.endTransmission();
  1040.   // Request 6 bytes of data
  1041.   Wire.requestFrom(Addr4, 6);
  1042.  
  1043.   // temp msb, temp lsb, temp crc, hum msb, hum lsb, hum crc
  1044.   if (Wire.available() == 6)
  1045.   {
  1046.     data[0] = Wire.read();//MSB
  1047.     data[1] = Wire.read();//LSB
  1048.     data[2] = Wire.read();//CHECKSUM
  1049.     data[3] = Wire.read();
  1050.     data[4] = Wire.read();
  1051.     data[5] = Wire.read();
  1052.   }
  1053.    float TEMP = (data[0] * 256.0) + data[1];
  1054.    float f = -45.0 + (175.0 * TEMP / 65535.0);
  1055.    float h = ((100.0 * ((data[3] * 256.0) + data[4])) / 65535.0);
  1056.  
  1057.  
  1058.  
  1059.       tft.setTextColor(ILI9341_RED);
  1060.       tft.setCursor(220, 10);
  1061.       tft.setTextSize(1);
  1062.       tft.print("Temp:    ");
  1063.       tft.setTextColor(ILI9341_RED);
  1064.       tft.print(f);
  1065.       tft.print("C");
  1066.  
  1067.      
  1068.       tft.setCursor(220, 25);
  1069.       tft.setTextColor(ILI9341_BLACK);
  1070.        tft.setTextSize(1);
  1071.       tft.print("Humidty: ");
  1072.       tft.setTextColor(ILI9341_BLACK);
  1073.       tft.print(h);
  1074.       tft.print("%");
  1075.  
  1076.  
  1077.      
  1078.  
  1079.       delay(1000);
  1080.       tft.fillRect(220, 10, 110, 50, ILI9341_GRAY);
  1081.  
  1082.    
  1083. //       int Gf = map(f, 0, 50, 0, tft.height);
  1084.    //    int Gh  = map(h, 0, 100, 0, tft.height-10);
  1085.      //int Gf = map(f, 0, 200, 0, 100);
  1086.       //int Gh = map(
  1087.      // tft.drawPixel(pix+1, 197-f, ILI9341_RED);
  1088.      // tft.drawPixel(pix+1, 187-h, ILI9341_GREEN);
  1089.  
  1090.  tft.drawPixel(pix+1, 251-(2*f), ILI9341_RED);
  1091.  
  1092.       tft.drawPixel(pix+1, 251-(2*h), ILI9341_BLACK);
  1093.      
  1094.      
  1095.   for (int i = 50; i < 320; i = i + 30)
  1096.   {
  1097.     tft.drawFastVLine(i, 50, 180, ILI9341_WHITE);
  1098.   }
  1099.  
  1100.  
  1101.   for (int i = 50; i < 320; i = i + 20)
  1102.   {
  1103.     tft.drawFastHLine(50, i, 320, ILI9341_WHITE);
  1104.   }
  1105.      
  1106.      
  1107.   }
  1108.  
  1109.  
  1110.  
  1111.   }
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.    void drawHome()
  1118.   {
  1119.   DateTime now = rtc.now();
  1120.    
  1121.   tft.fillScreen(ILI9341_WHITE);
  1122.   // put your setup code here, to run once:
  1123. //Draw white frame
  1124.   tft.drawRect(0,0,319,240,ILI9341_BLACK);
  1125.   tft.setTextColor(ILI9341_BLACK);
  1126.  
  1127.    tft.setCursor(170,5);
  1128.   tft.setTextSize(2);
  1129.  
  1130.  tft.fillRect(80,5,95,30,ILI9341_WHITE);
  1131.  tft.print(now.year(),DEC);  
  1132.  tft.print("/");
  1133.  tft.print(now.month(), DEC);  
  1134.  tft.print("/");
  1135.   tft.print(now.day(), DEC);    
  1136.  
  1137.  tft.drawLine(45,60,220,60, ILI9341_BLACK);
  1138.  tft.setCursor(45,40);
  1139.  tft.print(F("Data Logger"));
  1140.  
  1141.  
  1142. //pomiary
  1143.   tft.fillRoundRect(45,80, 230, 40,5, ILI9341_WHITE);
  1144.   tft.drawRoundRect(45,80,230,40,5,ILI9341_BLACK);
  1145.   tft.setCursor(50 ,90);
  1146.   tft.setTextColor(ILI9341_BLACK);
  1147.   tft.setTextSize(3);
  1148.   tft.print(F("Measurements"));
  1149.  
  1150.   //wykres
  1151.   tft.fillRoundRect(45,130, 230, 40,5, ILI9341_WHITE);
  1152.   tft.drawRoundRect(45,130,230,40,5,ILI9341_BLACK);
  1153.   tft.setCursor(120,135);
  1154.   tft.setTextColor(ILI9341_BLACK);
  1155.   tft.setTextSize(3);
  1156.   tft.print(F("Graph"));
  1157.  
  1158.  
  1159.   //SD on/off
  1160.   tft.fillRoundRect(45,180, 230, 40,5, ILI9341_WHITE);
  1161.   tft.drawRoundRect(45,180,230,40,5,ILI9341_BLACK);
  1162.   tft.setCursor(100,190);
  1163.   tft.setTextColor(ILI9341_BLACK);
  1164.   tft.setTextSize(3);
  1165.   tft.print(F("SD Card"));
  1166. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top