
#include <Wire.h> #include <SPI.h> #include <LiquidCrystal_I2C.h> //     LCD  i2c LiquidCrystal_I2C lcd(0x3F,16,2); //     i2c  //                #if defined(ARDUINO) && ARDUINO >= 100          #define printByte(args) write(args);          #else          #define printByte(args) print(args,BYTE);          #endif //    ,    .                  uint8_t graf0[8] = {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F};          uint8_t graf1[8] = {B00000, B11111, B11111, B11111, B11111, B11111, B11111};          uint8_t graf2[8] = {B00000, B00000, B11111, B11111, B11111, B11111, B11111};          uint8_t graf3[8] = {B00000, B00000, B00000, B11111, B11111, B11111, B11111};          uint8_t graf4[8] = {B00000, B00000, B00000, B00000, B11111, B11111, B11111};          uint8_t graf5[8] = {B00000, B00000, B00000, B00000, B00000, B11111, B11111};          uint8_t graf6[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B11111};          uint8_t graf7[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000}; //    int stat[2][25]; // 2  ,    (  )      //int stat[0]; // //int stat[1]; // #include <BMP085.h> BMP085 dps = BMP085();     //    long Pressure = 0; void setup(void) {  lcd.init();  lcd.backlight(); //   lcd.createChar(0, graf0);//  .   lcd.createChar(1, graf1);  lcd.createChar(2, graf2);  lcd.createChar(3, graf3);  lcd.createChar(4, graf4);  lcd.createChar(5, graf5);  lcd.createChar(6, graf6);  lcd.createChar(7, graf7); }  void loop(void) { if (((millis()/3600000)-stat[1][23]) >= 1.0) //    1  (3600000)    {      //  ,            int i=0;        for (i = 0; i < 24; i++) stat[0][i] = stat[0][i+1];        for (i = 0; i < 24; i++) stat[1][i] = stat[1][i+1];         dps.getPressure(&Pressure); //       stat[0][23] = Pressure/13.33;     stat[1][23] = millis()/3600000;         grafik(0, 2, 0); // ,        ,    ,    ,     .    (0),    (2)    (0)  }  int interval(int x) { int maxy = -5000; int inty = 0; int minx = minimum(x);      for (int k = 0; k <= 24; k++) {                               if (stat[1][k] != 0) {                    //                                  if (stat[x][k] > maxy) maxy = stat[x][k];  //                                 }}                     if (maxy == -5000) maxy = 0;                                           //     inty = maxy - minx;    intx = inty/8;    return intx; }  int minimum(int d) {     minx = 32767;     for (int i = 0; i <= 24; i++) {                             if (stat[1][i] != 0) {                //                                  if (stat[d][i] < minx) minx = stat[d][i];//                                }}      if (minx == 50000) minx = 0;      return minx; }  void grafik(int x, int y, int z) {       lcd.setCursor(0, 1);       lcd.print("Dav"); //            intx = interval(x); //              int minx = minimum(x); //            for (int i=z; i <= 24; i= i + y){             if (stat[x][i] == 0){                             //                    lcd.print("-");                                 //  ,               } else if (stat[x][i] > (minx + intx*7)) {               lcd.printByte(0);             } else if (stat[x][i] > (minx + intx*6)) {               lcd.printByte(1);             }else if (stat[x][i] > (minx + intx*5)) {               lcd.printByte(2);             }else if (stat[x][i] > (minx + intx*4)) {               lcd.printByte(3);             }else if (stat[x][i] > (minx + intx*3)) {               lcd.printByte(4);             }else if (stat[x][i] > (minx + intx*2)) {               lcd.printByte(5);             }else if (stat[x][i] > (minx + intx)) {               lcd.printByte(6);             } else {               lcd.printByte(7);             }          }        } Source: https://habr.com/ru/post/357898/
All Articles