SHARE
TWEET

Untitled

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